Commit Graph
2655 Commits
Author SHA1 Message Date
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