José Valim
9a663cf3fa
Convert map fields into an orddict and implement meet optimizations ( #15142 )
...
Related to #15129 .
2026-03-06 21:57:55 +01:00
José Valim
77e6687eef
Handle Kernel.in/2 in type system instead of using rewrite rules, closes #15130
2026-03-05 08:48:03 +01:00
José Valim
f7c4047d30
Keep old functions around so old artifacts still work as expected
2026-03-03 13:37:27 +01:00
José Valim
6e6ed6a3b5
Only return purgeable modules back to pool
2026-03-03 13:35:09 +01:00
José Valim
b792fb41c5
Clarify error message for always failing private function, closes #14401
2026-02-27 15:16:02 +01:00
José Valim
4c203429d6
Include maybe feature
2026-02-23 14:27:56 +01:00
José Valim
a0ef7f0c3e
Move struct validation in patterns and updates to type checker
...
This means changing a struct definition only cases
recompilation when structs are created, no longer on
matches and updates.
Closes #15098 .
2026-02-23 14:24:29 +01:00
José Valim
34a50002f9
Keep Kernel.in/2 as :lists.member/2 and optimize in type checker and Erlang pass
2026-02-23 14:24:29 +01:00
José Valim
b05fec0c87
Use evaluation when compiling modules ( #15087 )
2026-02-19 18:11:28 +01:00
José Valim
85b1ad0764
Do not emit warnings during IEx parsing
...
Closes #15090 .
Unfortunately, I could not write a test for this as the error
only happens when using actual I/O devices. When using the mock
device we use in tests, the warning appears as expected.
2026-02-18 13:45:56 +01:00
José Valim
5abcc33267
Improve error message and docs for headless clauses, closes #15104
2026-02-18 09:54:04 +01:00
José Valim
3fbe977035
Validate Macro.Env struct upfront to avoid failures deep within the compiler, closes #15088
2026-02-01 20:49:59 +01:00
José Valim
c40c140e3f
Postpone deletion of modules to avoid code server bottleneck
2026-01-31 13:56:15 +01:00
José Valim
8def030f38
Use type warning instead of typing violation, closes #15065
2026-01-16 08:37:04 +01:00
José Valim
bfa154e70b
Consider subtyping on bitstring segments
2026-01-10 19:12:19 +01:00
José Valim
2a2be0acde
Track alias defined through require usage, closes #14789
2026-01-09 12:34:55 +01:00
José Valim
4ee0241a5e
Represent bitstring and binary as distinct types ( #15038 )
2026-01-07 12:00:25 +01:00
José Valim
f1bbb2cd32
Infer types from guards and do post-inference on stdlib ( #15032 )
...
We now infer types from guards although we don't
yet infer conditional types (such as on `or`).
2026-01-02 19:48:45 +01:00
José Valim
19c628ae23
Mark invididual guards of ||, &&, if, and unless as generated
2025-12-30 12:00:11 +01:00
Dave Lucia
8d8111af07
Convert (most) links to https ( #15028 )
2025-12-30 09:21:23 +01:00
José Valim
b60e424204
Typecheck Map.from_struct/1
2025-12-12 13:29:37 +01:00
José Valim
d831a00063
Unify clauses by extracting location and op
2025-12-12 12:20:21 +01:00
Łukasz Samson
a09fa1075a
Fix parser crash on missing parentheses on expression following operator \"not in\" warning ( #15011 )
2025-12-12 12:14:10 +01:00
Jechol Lee
c80a3b1a0e
Fix unnecessary recompilation when dbg_callback is modified at runtime ( #15007 )
...
When :elixir app starts, store the dbg_callback value in dbg_callback_initial.
Mix compiler now compares against dbg_callback_initial instead of dbg_callback.
This prevents unnecessary recompilation when tools like Kino modify
dbg_callback at runtime. Previously, such runtime modifications would trigger
a full recompilation of all files using dbg/2, even though the config hadn't
actually changed.
The key insight is that dbg/2 is a compile-time macro, so runtime modifications
to dbg_callback don't affect already-compiled code. Only actual config changes
(reflected in dbg_callback_initial) should trigger recompilation.
This is a more general solution than detecting specific wrapping patterns,
as it works with any tool that modifies dbg_callback at runtime.
2025-12-10 09:21:08 +01:00
José Valim
e1ff7819b8
Fix deprecation warning on !left in right, closes #15001
2025-12-08 09:36:23 +01:00
José Valim
509e715f60
Support fetching abstract code for modules compiled with Elixir v1.14 and earlier, closes #14987
2025-12-03 20:00:29 +01:00
José Valim
7da1b76b6b
Ensure line and column are included in empty blocks, closes #14931
2025-11-22 18:29:39 -08:00
José Valim
1b92f3ac87
Bump checker version
2025-11-19 10:43:50 -08:00
Jean Klingler
aef3dcecd1
Warn on deprecated ~~~ unary op in tokenizer ( #14870 )
2025-10-29 19:23:31 +09:00
José Valim
dc6647c0e9
Pass signatures on the side instead of module map
2025-10-23 00:18:14 +02:00
José Valim
d18088a3b4
Do not include signatures twice in beam files
2025-10-22 23:58:33 +02:00
José Valim
22b47d7f48
Measure and optimize writing of .beam files in the compiler
...
This should provide meaningful benefits when working with
containers and network mounted drives.
2025-10-22 10:47:00 +02:00
José Valim
f4aa384d1b
Escape meta within existing quote extensions ( #14832 )
...
Closes #14829
Closes #14830
2025-10-14 13:07:05 +02:00
José Valim
e07f0117bd
Improve error message when escaping default values with custom rules in structs, closes #14817
2025-10-07 14:26:02 +02:00
José Valim
36b0a69d3c
Ensure escaping works within struct fields, closes #14817
2025-10-07 13:07:18 +02:00
Eksperimental
e7c121609e
Grammar correction: to warn of ( #14816 )
...
Use "to warn of something" instead of "to warn for something".
Some instances of "to warn on" and "to warn about" have been replaced.
2025-10-06 19:05:04 +02:00
José Valim
781d500246
Checkpoint before verification to avoid ignore modules warnings
2025-10-05 15:36:13 +02:00
José Valim
184c7717f6
Include previous clause line on default errors/warnings, closes #14804
2025-10-01 08:43:16 +02:00
Jean Klingler
16fb81545d
Optimize for comprehensions into: MapSet ( #14796 )
2025-09-29 18:15:50 +09:00
Guillaume Duboc
5a2a5ae96c
Rewrite maps, tuples, lists as BDDs and improve performance ( #14693 )
2025-09-28 19:04:45 +02:00
José Valim
0685a35c63
Address regressions on 'not in' operator
...
Closes #14783 .
2025-09-28 17:03:32 +02:00
José Valim
bba5542393
Do not warn on conditional requires or requires from quote
2025-09-27 16:33:05 +02:00
Thiago Santos
f089571351
Warn on unused require ( #14779 )
2025-09-23 09:38:06 +02:00
Jean Klingler
9a8794183e
Warn on boot for OTP28.0 ( #14732 )
2025-09-18 19:08:39 +09:00
Jean Klingler
514bc86a71
Fix Macro.escape/1 bug when :quote tuples is in the tail of a list ( #14775 )
...
Close https://github.com/elixir-lang/elixir/issues/14771
2025-09-17 07:15:16 +09:00
Jean Klingler
2ee1d0eb78
Bugfix: Macro.escape/1 properly escapes meta in :quote tuples ( #14773 )
...
Close #14771
Also internally renames the `op` field inside `elixir_quote`: `none -> escape`, `prune_metadata` -> `escape_and_prune`, `add_context -> quote`.
2025-09-16 18:36:39 +09:00
José Valim
2e55f40713
Do not persist temporary compilation warnings, closes #14768
2025-09-14 10:26:55 +02:00
José Valim
bedb6777c1
Revert "Bump column info on open curly in %{"
...
Otherwise tokens are emitted with the wrong information.
This reverts commit 6a7511f9af .
2025-09-02 11:23:24 +02:00
José Valim
6a7511f9af
Bump column info on open curly in %{
2025-09-02 10:17:30 +02:00
José Valim
78fb312013
Consistently treat \ followed by newlines as horizontal space
...
Closes #14713 .
Closes #14714 .
2025-08-31 20:04:24 +02:00