🌟 Highlights
Core
- Erlang/OTP 29 language support: (native records, multi-valued comprehensions, left-associative functions, and more
- Major overhaul to macro handling, correctly resolving
?FUNCTION_NAME,?FUNCTION_ARITY,??, etc - Conditional processing implemented, currently disabled by default (enable it by passing
--if-defor via theelp.ifdef.enableVS Code setting) - Several dependencies updated, including Salsa
- More powerful structural search and replace (SSR)
- New version of the eqWAlizer type-checker
[Breaking] Major overhaul to the .elp_lint.toml file
- The
enabled_lintsanddisabled_lintskeys are no longer supported - The configuration file is now validated
- If you used those keys in your config, please remove them from your config or ELP will fail to start
- Use the new configuration format to enable and disable linters
- Live changes to the
.elp_lint.tomlfile are now reflected in the IDE
New features
- New daemon mode for the CLI (UNIX only), via the
--connectflag - ELP now reports redundant suppressions (unnecessary
elp:ignoreorelp:fixme) - Support for configurable dynamic calls
- Go-to-references now considers supervisor child specs
- Includes are inserted in alphabetical order
- Quick fixes for undefined records and unused record fields
- Extract
caseto function clauses - Progress bar to
lintcommand - Semantic highlighting of format string specifiers
New linters & diagnostics
W0073/W0074/W0075— Detection of eqwalizer escape hatchesW0076— validate-dialyzer()attribute contents.W0077— unused exported functions.W0078— detect duplicate includes.W0080— flag simplifiablemaps:merge/2calls.
Bug fixes and performance improvements
- Linting up to 13% faster
- Respect
no_auto_importwhen resolving auto-imported BIFs - Various bug fixes and performance improvements
Full Changelog
04477cc Add config for elp.ifdef.enable (Alan Zimmerman)
2e3626b Bump sval_serde 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
0d38957 Bump sval_nested 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
42c85d9 Bump sval_json 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
90a5824 Bump sval_fmt 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
4fcedf9 Bump sval_dynamic 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
a070f55 Bump sval_buffer 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
5d1039b Bump sval 2.19.0 -> 2.20.0 (generatedunixname2066905484085733)
5ae242a Bump OSS VS Code extension version to 0.51 (Alan Zimmerman)
67b0478 Update dependencies from dependabot (Alan Zimmerman)
05d4810 Consolidate ad-hoc lints into lint_config in DiagnosticsConfig (Roberto Aloi)
d4a100a Fix failing CI for arm platforms (Alan Zimmerman)
e7a085f Bump ratatui-core 0.1.0 -> 0.1.1 (generatedunixname2066905484085733)
a7f4200 elp_lint: warn about wrongly encoded binary strings (Michał Muskała)
fdf55c6 Resolve ?FUNCTION_NAME in macro-generated function clauses (Alan Zimmerman)
bb83acd Update strum from 0.27.2 to 0.28.0 (David Tolnay)
c90e360 Bump chrono 0.4.44 -> 0.4.45 (generatedunixname2066905484085733)
0a494d0 Bump log 0.4.29 -> 0.4.32 (generatedunixname2066905484085733)
bf79672 Bump zerocopy 0.8.48 -> 0.8.50 (generatedunixname2066905484085733)
a36cdaa Bump mio 1.2.0 -> 1.2.1 (generatedunixname2066905484085733)
8d76f49 Bump yoke 0.8.2 -> 0.8.3 (generatedunixname2066905484085733)
c101c16 Bump unicode-segmentation 1.13.2 -> 1.13.3 (generatedunixname2066905484085733)
91ce160 Bump inotify 0.11.1 -> 0.11.2 (generatedunixname2066905484085733)
90e9bd5 Respect no_auto_import when resolving auto-imported BIFs (Roberto Aloi)
4c413db Bump memchr 2.8.0 -> 2.8.1 (generatedunixname2066905484085733)
78814bd Bump gilrs 0.11.1 -> 0.11.2 (generatedunixname2066905484085733)
9eaed72 Bump cc 1.2.62 -> 1.2.63 (generatedunixname2066905484085733)
1fa8846 11/n salsa: convert ErlAstDatabase and EqwalizerDatabase FileId queries (Alan Zimmerman)
cd11cd7 10/n salsa: convert DefDatabase body queries via salsa-interned wrappers (Alan Zimmerman)
cbf78c1 9/n salsa: convert DefDatabase resolve_include via composite interned wrapper (Alan Zimmerman)
cb3129d 8/n salsa: convert RootQueryDb ProjectId queries via salsa-interned wrapper (Alan Zimmerman)
3cede7a 7/n salsa: convert InFile<{FunctionDefId,FunctionClauseId}> queries (Alan Zimmerman)
a8f2622 6/n salsa: convert DefDatabase FileId queries via salsa-interned wrapper (Alan Zimmerman)
8c62e86 5/n salsa: convert RootQueryDb FileId queries via salsa-interned wrapper (Alan Zimmerman)
c9cde08 4/n salsa: Non-macro InternDatabase, skip the query-group macro (Alan Zimmerman)
75183ca 3/n salsa: Migrate salsa 0.22 → 0.25 (Alan Zimmerman)
f9947a4 2/n salsa: Migrate salsa 0.19 → 0.22 (Alan Zimmerman)
b587b4a 1/n salsa: Restore salsa 0.19 upgrade (Alan Zimmerman)
032d222 Remove spurious references to obsolete build scripts (Roberto Aloi)
e4e5a1c HIR: Fix double-unescaping of quoted sigil strings (Alan Zimmerman)
3aff124 HIR: Fix \x{} hex escape parsing for 5+ digit Unicode codepoints (Alan Zimmerman)
3287b77 HIR: Support non-quote sigil delimiters (Alan Zimmerman)
70790a4 Bump kqueue 1.1.1 -> 1.2.0 (generatedunixname2066905484085733)
399db48 Revert D107781636: Bump cc 1.2.62 -> 1.2.63 (generatedunixname89002005232357)
6440f43 Revert D107781643: Bump kqueue 1.1.1 -> 1.2.0 (generatedunixname89002005232357)
a5385b8 Bump kqueue 1.1.1 -> 1.2.0 (generatedunixname2066905484085733)
0b3eea7 Bump cc 1.2.62 -> 1.2.63 (generatedunixname2066905484085733)
8a1081f Bump num-conv 0.2.0 -> 0.2.2 (generatedunixname2066905484085733)
376c703 Bump autocfg 1.5.0 -> 1.5.1 (generatedunixname2066905484085733)
deef4c9 Bump wasm-bindgen-cli 0.2.118 -> 0.2.122 (generatedunixname2066905484085733)
b0a55d7 Bump bumpalo 3.20.2 -> 3.20.3 (generatedunixname2066905484085733)
607337c Bump either 1.15.0 -> 1.16.0 (generatedunixname2066905484085733)
521ecab Bump dashmap 6.1.0 -> 6.2.1 (generatedunixname2066905484085733)
d2c5d27 switch to using tree-sitter-erlang 0.19 (Alan Zimmerman)
9efede9 15/n HIR macros: Fix macro stringification of nested complex expressions (Alan Zimmerman)
0406a8d 14/n HIR macros: Fix built-in macros in string concatenation (Alan Zimmerman)
6777039 13/n HIR macros: Normalize atom quoting in macro stringification (??) (Alan Zimmerman)
7cc5207 Emit Erlang->Thrift bridge facts (Katie Ots)
f8f6785 Upgrade strsim to 0.11.1 (Neil Mitchell)
45f86c0 12/n HIR macros: Fix macro-to-macro resolution in string concatenation (Alan Zimmerman)
5020111 11/n HIR macros: Fix macro parameter variables in string concatenation producing 'Missing' (Alan Zimmerman)
4028267 10/n HIR macros: Fix multi-element macro expansion in function call arguments (Alan Zimmerman)
88d7156 9/n HIR macros: Fix multi-element macro expansion in tuple expressions and patterns (Alan Zimmerman)
28cb5a5 bump version to 0.19.0 (Alan Zimmerman)
6e82aff 8/n HIR macros: Fix nested macro expansion producing 'missing' in guard context (Alan Zimmerman)
f95ff2d 7/n HIR macros: Fix nested macro expansion producing 'missing' in clause bodies (Alan Zimmerman)
5fa1301 6/n HIR macros: Fix multi-element macro expansion in binary patterns and expressions (Alan Zimmerman)
d6e6a6e 5/n HIR macros: Fix macro expansion of ReplacementExprGuard in case clause patterns (Alan Zimmerman)
1e168f3 Make guard required in replacement_expr_guard (Alan Zimmerman)
5dc5cbe 4/n HIR macros: Fix multi-element macro expansion in list patterns and expressions (Alan Zimmerman)
f8d723b SSR: support two glob placeholders per sequence (lazy-first) (Alan Zimmerman)
b12db8f 4/n ssr atom: Wire atom placeholders into SSR matching for structural positions (Alan Zimmerman)
7d6919c Add update-expect targets for refreshing expect-test snapshots (Roberto Aloi)
773ae23 Add ELP lint regression CI signal for WASERVER (Roberto Aloi)
0c491ee 3/n ssr atom: Introduce NamedAtom to pair record name atoms with their ExprId (Alan Zimmerman)
11eb961 2/n ssr atom: extend SsrPlaceholder to represent atom placeholders (Alan Zimmerman)
9b74388 1/n ssr atom: recognise atom placeholders (Alan Zimmerman)
f4af56f Log telemetry for invalid CLI invocations (Roberto Aloi)
03ba798 Extend telemetry for elp cli usage within Meta (Roberto Aloi)
5e6b28d 3/n HIR macros: Fix macro expansion of multi-type bodies in tuple types (Alan Zimmerman)
1dd9008 2/n HIR macros: Fix multi-expression macro expansion in try/block bodies (Alan Zimmerman)
67b7968 Refactor for schema.2 (Katie Ots)
52ee172 Bump zerofrom 0.1.7 -> 0.1.8 (generatedunixname2066905484085733)
dd921d0 Remove stale --v2 flag (Katie Ots)
02fddac Remove obsolete Buck Cargo feature (Roberto Aloi)
dbfb5a8 Expose docs hidden by parenthesized metadata (Katie Ots)
b14ba03 Bump windows-targets 0.53.2 -> 0.53.5 (generatedunixname2066905484085733)
7860086 Bump deranged 0.5.5 -> 0.5.8 (generatedunixname2066905484085733)
058c532 Bump no_std_io2 0.9.3 -> 0.9.4 (generatedunixname2066905484085733)
68855f2 Bump potential_utf 0.1.4 -> 0.1.5 (generatedunixname2066905484085733)
b5458b4 Bump litemap 0.8.1 -> 0.8.2 (generatedunixname2066905484085733)
ac58120 Run Buck-mode binary tests in Meta CI (Roberto Aloi)
c6ce321 1/n HIR macros: Expand sequence in clause bodies (Alan Zimmerman)
a074701 HIR: Preserve wildcard record fields in lowering (Alan Zimmerman)
a201613 Add lint-compare subcommand for diagnostic regression detection (Roberto Aloi)
6b9bbd6 Delete cxx patches from elp and reindeer (David Tolnay)
833bbcc Bump writeable 0.6.2 -> 0.6.3 (generatedunixname2066905484085733)
c19300c Bump iana-time-zone-haiku 0.1.1 -> 0.1.2 (generatedunixname2066905484085733)
f9757ed Bump redox_users 0.5.0 -> 0.5.2 (generatedunixname2066905484085733)
ebd3f5e Bump wasip2 1.0.1+wasi-0.2.4 -> 1.0.3+wasi-0.2.9 (generatedunixname2066905484085733)
5a2950e Bump getrandom 0.4.1 -> 0.4.2 (David Tolnay)
2328bc6 Bump windows_x86_64_msvc 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
c36f1f8 Bump windows_x86_64_gnullvm 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
1a08a17 Bump windows_x86_64_gnu 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
2afd868 Bump windows_i686_msvc 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
7fcdc6a Bump windows_i686_gnullvm 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
04985b1 Bump windows_i686_gnu 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
dd158b5 Bump windows_aarch64_msvc 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
17143cd Bump windows_aarch64_gnullvm 0.53.0 -> 0.53.1 (generatedunixname2066905484085733)
c16c6ed Update libredox from 0.1.12 to 0.1.17 (David Tolnay)
dcb5070 Update tower-lsp-server from 0.21.1 to 0.22.1 (David Tolnay)
17836d3 Bump kqueue-sys 1.0.4 -> 1.1.2 (generatedunixname2066905484085733)
0c200ad Bump unit-prefix 0.5.1 -> 0.5.2 (generatedunixname2066905484085733)
db9f00b upgrade provenant to 0.1.4 (Maxim Stykow)
0124af0 Updating hashes (Open Source Bot)
0fd0e89 Bump redox_syscall 0.2.10 -> 0.2.16 (generatedunixname2066905484085733)
a1adb12 Bump redox_syscall 0.5.6 -> 0.5.18 (generatedunixname2066905484085733)
a3041ec Update displaydoc from 0.2.5 to 0.2.6 and drop patch (David Tolnay)
a3ae736 Bump clipboard-win 5.4.0 -> 5.4.1 (generatedunixname2066905484085733)
461df84 Bump notify-types 2.0.0 -> 2.1.0 (generatedunixname2066905484085733)
13b61b4 Pass rebar3/escript/erl paths via env vars instead of buck resources (Roberto Aloi)
a260804 Replace scribe_cat subprocess with internal scribe-cat Rust crate (Roberto Aloi)
12308d8 ELP: embed erlang_service & eqwalizer into Buck-built elp binary (Roberto Aloi)
bd880ca Update from lsp-types 0.94 to 0.97 (David Tolnay)
f89dcd6 Bump error-code 3.2.0 -> 3.3.2 (generatedunixname2066905484085733)
d970106 HIR: Fix ??Param stringification inside Concatables (adjacent string literals) (Alan Zimmerman)
f58089e HIR: Fix ??Param stringification in nested macros (Alan Zimmerman)
fb156d8 Bump parking_lot_core 0.8.5 -> 0.8.6 (generatedunixname2066905484085733)
dad06fe Bump borsh 1.5.3 -> 1.6.1 (generatedunixname2066905484085733)
a484a4f Bump sval_serde 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
093732a Bump sval_json 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
8acf1d5 Bump sval_fmt 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
c3256c5 Bump sval_dynamic 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
7867dd7 Bump sval_buffer 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
66a37cb Bump sval 2.5.0 -> 2.19.0 (generatedunixname2066905484085733)
86bba68 Bump tokio 1.52.1 -> 1.52.3 (generatedunixname2066905484085733)
c2bea4c Bump serde_with 3.18.0 -> 3.20.0 (generatedunixname2066905484085733)
e34eba0 Bump cc 1.2.61 -> 1.2.62 (generatedunixname2066905484085733)
b0c09df Updating hashes (Open Source Bot)
c3366ba tests showing inconsistent handling of tuple() type (Ilya Klyuchnikov)
ee3f694 Add --source-root flag for relative filepaths (Katie Ots)
3e9490c Updating hashes (Open Source Bot)
0262fee BE: add more comprehensive tests for explicit erlang module qualification (Alan Zimmerman)
73ce570 Resolve macros in string concatenation for abstract forms (Alan Zimmerman)
de80227 Fix triple-quoted string indentation stripping to match OTP behavior (Alan Zimmerman)
ab259ee keep aliases in Narrow.meet (Ilya Klyuchnikov)
5c15c39 Avoid assert.hrl inclusion in test projects (Roberto Aloi)
7a3bb95 BE: tidy up comments around placeholder caching. (Alan Zimmerman)
552df2f Index .escript files (Katie Ots)
1aef3b3 HIR: macro expansion in guard context (Alan Zimmerman)
ebdf027 HIR: lower binary type expressions (Alan Zimmerman)
242d8aa Fix unescape_string for
3d3e365 Extend MacroPrecedenceSuprise linter for match-in-binop via macro args (Alan Zimmerman)
4df4fa6 Updating hashes (Open Source Bot)
7569128 Mimic OTP epp ?FUNCTION_ARITY bug for abstract forms compatibility (Alan Zimmerman)
504e5db Optimize native diagnostics linter registry (Tom Davies)
30f7ecd elp daemon: remove deprecated --idle-timeout flag (Michał Muskała)
7cc52bc Add mechanism to identify redundant suppressions (W0081) (Roberto Aloi)
e76dac1 Use tree-sitter-erlang 0.18 (Alan Zimmerman)
33e37c0 bump version to 0.18.0 (Alan Zimmerman)
2293aa5 Bump libflate 2.1.0 -> 2.3.0 (generatedunixname2066905484085733)
0a85234 Bump fraction 0.15.1 -> 0.15.4 (generatedunixname2066905484085733)
4fb46bb Bump num-iter 0.1.43 -> 0.1.45 (David Tolnay)
2fd877a Switch to new *_GLOB naming convention (Tom Davies)
742468e Collapse map-to-list comprehension SSR guards (Tom Davies)
3be5f2b Collapse map-from-list comprehension SSR guards (Tom Davies)
ca02ccd Updating hashes (Open Source Bot)
9bbd3ce SSR globs: support glob matching in map update fields (Alan Zimmerman)
faa99e5 SSR globs: support glob matching for map key-value pairs (Alan Zimmerman)
b12f2e9 10/n SSR globs: support glob matching in comprehension guards (Alan Zimmerman)
464d358 9/n SSR globs: support glob matching in case/receive/if/try clause bodies (Alan Zimmerman)
2ad199e 8/n SSR globs: support glob matching in closure/fun clause bodies (Alan Zimmerman)
adcb5a5 elp daemon: configure idle timeout via [daemon] in .elp.toml (Michał Muskała)
194568e Bump serde_fmt 1.0.3 -> 1.1.0 (generatedunixname2066905484085733)
2ba5b11 Bump instant 0.1.12 -> 0.1.13 (generatedunixname2066905484085733)
c876d8a Bump dary_heap 0.3.6 -> 0.3.9 (generatedunixname2066905484085733)
8f3f7a9 Bump autocfg 1.1.0 -> 1.5.0 (generatedunixname2066905484085733)
b9874ea Bump wasi 0.11.0+wasi-snapshot-preview1 -> 0.11.1+wasi-snapshot-preview1 (generatedunixname2066905484085733)
baacfa9 elp lint: add --connect for daemon-mediated fast turnaround (Michał Muskała)
86b0174 Extract maps:with/maps:without keys from type, not AST (Michał Muskała)
3cd0c84 Test maps:with/maps:without with non-literal key lists (Michał Muskała)
02920a6 Updating hashes (Open Source Bot)
4239033 Re-sync with internal repository (#205) (meta-codesync[bot])
f1ea1c2 Stop writing erlang.1 facts (Katie Ots)
5776981 Use --client-metadata=id=elp for buck2 invocations (Michał Muskała)
88a60d3 Surface buck2 errors and forward progress during project load (Michał Muskała)
1f94ed3 Gate daemonize dep on cfg(unix) so Windows OSS builds compile (Michał Muskała)
f493b03 7/n SSR globs: add begin..end block body glob tests (Alan Zimmerman)
e1fcd59 Bump stable_deref_trait 1.2.0 -> 1.2.1 (generatedunixname2066905484085733)
31a8c79 Fix tree-sitter-erlang grammar: alias match_catch_pat to match_expr (Alan Zimmerman)
b507dc3 Bump scratch 1.0.6 -> 1.0.9 (generatedunixname2066905484085733)
938c847 6/n SSR globs: Centralise SSR placeholder name-check logic (Alan Zimmerman)
3599e37 Implement ?? (MacroString) stringification in HIR lowering (Alan Zimmerman)
92de73f 5/n SSR globs: Glob: repeated-occurrence equivalence and public retrieval API (Alan Zimmerman)
c171735 4/n SSR globs: Match SSR glob placeholders against ordered-list sequences (Alan Zimmerman)
528528c 3/n SSR globs: Validate glob placeholder usage in SSR rules (Alan Zimmerman)
c657c9a 2/n SSR globs: Refactor PlaceholderMatch into Single/Glob enum (Alan Zimmerman)
f00df84 1/n SSR globs: Recognize _@@ SSR glob placeholder prefix (Alan Zimmerman)
7cbcfb2 Detach ELP daemon from parent process (Michał Muskała)
219cc55 Preserve original behaviour/behavior spelling in abstract forms (Alan Zimmerman)
808471f Fix ?FILE macro in erlang_service by enabling deterministic mode (Alan Zimmerman)
7e8051f Add unqualified field to Expr::CallTarget (Alan Zimmerman)
116794b descend into Paren under InvisibleParens so inner ExprId is visited (Michał Muskała)
2d4e89d effect_free_statement: switch to purely HIR-based reasoning (Michał Muskała)
21d3367 Compose macro usage entity comments (Katie Ots)
d982d86 Generate Cargo configuration from Buck (autocargo) (Roberto Aloi)
13f6a59 Use nightly rustfmt for xtask codegen (Alan Zimmerman)
e7c012a Update third-party tree-sitter-erlang to 0.17.0 (Alan Zimmerman)
559f757 Use tree-sitter-erlang 0.17.0 (Alan Zimmerman)
f52ebd9 Use where to introduce SSR conditions (Alan Zimmerman)
34f5d43 Updating hashes (Open Source Bot)
58dba8d SSR: positional LABEL:ssr: PATTERN syntax for pattern labels (Michał Muskała)
8d5f4d7 ssr: more comprehensive when conditions (Alan Zimmerman)
07e698b Add :> (unchecked cast) operator to tree-sitter grammar (Michał Muskała)
6de8df9 Convert Makefile post-processing from Ruby to Python3 and relax rustfmt check (Michał Muskała)
fa1f199 Add per-function type-checking IPC interface (Michał Muskała)
74222af fix: use dunce::canonicalize to strip \?\ prefix on Windows (#185) (Jokerkern)
5ed002d Expose SSR placeholder bindings in JSON output (Michał Muskała)
0c200fd Use full file length for HeaderDeclaration span (Katie Ots)
cf29ca8 W0080 - flag simplifiable maps:merge/2 calls (Tom Davies)
f59e18b Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /website (#202) (dependabot[bot])
3ede668 Configurable dynamic calls (Roberto Aloi)
6e62548 Bump fast-uri from 3.1.0 to 3.1.2 in /website (#201) (dependabot[bot])
bcacb78 Render end-position in daemon-mode diagnostic output (Michał Muskała)
6545041 Emit end-position in arc_types::Diagnostic JSON output (Michał Muskała)
052fc7e Updating hashes (Open Source Bot)
b7f2cf4 Keep aliases in refining (Michał Muskała)
9ffbc1f Fix meet to unfold parameterized type aliases (Michał Muskała)
e21868e Document linter enable/disable in .elp_lint.toml (Roberto Aloi)
080383d Drop dependency on rust-analyzer profile crate (Roberto Aloi)
9df0460 Exclude xref-based macro/record declarations from v2 output (Katie Ots)
cd84129 Fix broken xplat/endtoend/jest-e2e/apps/vscode/tests/nuclide.erlang/VSCodeErlangAddDocTest-e2e.j (generatedunixname2012458493028417)
de6d3a9 Fix panic in InFunctionBody::in_clause for macro-expanded clauses (Alan Zimmerman)
56e37e1 Skip eqwalizer typecheck for non-module files (Katie Ots)
e27a93c Switch eqwalizer test fixtures to OTP28Only and regen against OTP 28 (#199) (Victor Lanvin)
27202a1 Updating hashes (Open Source Bot)
7c496f9 Remove form-level missing separator diagnostics (Roberto Aloi)
5ceb45f Use def_map_local for record definitions and fields (Katie Ots)
c7b1f1d Emit MacroDefinition facts for header-defined macros (Katie Ots)
0f12708 Updating hashes (Open Source Bot)
468917e fix custom handling of lists:member (Ilya Klyuchnikov)
7d3e5e4 lists:member - one more snapshot test (Ilya Klyuchnikov)
5a16361 Emit AppInfo facts (Katie Ots)
33cff9e Fix cross-app file attribution in Glean indexer (Katie Ots)
a677a07 Emit OTP behaviour callback stubs (Katie Ots)
b66291d Emit callback xrefs for functions implementing behaviour callbacks (Katie Ots)
cf30084 Emit per-field xrefs for record field access (Katie Ots)
15289e0 BE: fix clippy warnings from rust 1.95.0 (Alan Zimmerman)
8a87a00 Fix module attribution for header-defined macros (Katie Ots)
5d71598 Fix xref-based DeclarationLocation spans for records and macros (Katie Ots)
871f3c4 Harden v1/v2 split for macro arity, xref targets, and doc comments (Katie Ots)
7ab9683 Emit DeclarationLocation for Module, RecordField, and Callback declarations (Katie Ots)
882b3a0 Preserve := map fields in Expr::Map lowering for macro args (Alan Zimmerman)
d447c4d Updating hashes (Open Source Bot)
40a6f47 Emit DeclarationTarget facts with caller attribution (Katie Ots)
5c0d848 Include OTP xrefs in Glean output (Katie Ots)
2b6e65d 8/n ifdef perf: Move condition_macro_defs trimming out of condition_expr (Alan Zimmerman)
beaa9d6 7/n ifdef perf: Migrate callers, remove large fields from PreprocessorAnalysis (Alan Zimmerman)
193c4e8 6/n ifdef perf: Add PreprocessorMacroDefs struct and compute_file_macro_defs (Alan Zimmerman)
8795048 Remove obsolete way of enabling/disabling linters (Roberto Aloi)
698ee94 Live apply changes to .elp_lint (Roberto Aloi)
3543932 5/n ifdef perf: Refactor: extract file_preprocessor_analysis_impl helper (Alan Zimmerman)
3d70657 4/n ifdef perf: Skip empty condition macro snapshots in ifdef processing (Alan Zimmerman)
7224590 3/n ifdef perf: Speed up UnusedMacro linter using preprocessor data (Alan Zimmerman)
ef4b54f 2/n ifdef perf: Cache macro usages in FormList for ifdef processing (Alan Zimmerman)
02a1057 1/n ifdef perf: Trim condition_macro_defs snapshots to reduce Salsa storage (Alan Zimmerman)
0c02a56 Populate FunctionDefinition deprecated text (Katie Ots)
881bbc9 Disable eqwalizer in test fixtures unless //- eqwalizer set (Alan Zimmerman)
57b3a86 Updating hashes (Open Source Bot)
e152c57 Update indexer metrics for erlang.2 (Katie Ots)
64976b3 Populate VarDeclaration type_text from eqwalizer (Katie Ots)
e255286 Daemon mode is only available on UNIX (#193) (Roberto Aloi)
bd5215f BE: Use def_map_local in diagnostics that filter by current file_id (Alan Zimmerman)
f83f2ed Emit MacroUsage and MacroUsageLocation facts (Katie Ots)
b4e7a7d Fix visibility for diagnostics trait internals (Roberto Aloi)
694c1b6 Split missing/unexpected separator linters (Roberto Aloi)
4f18940 Address vulnerabilities for the OSS VS Code extension (Roberto Aloi)
04daaf8 Address vulnerabilities for website via resolutions (Roberto Aloi)
204910b Add W0079 ElpCiTestDiagnostic for injecting failures into CI (Alan Zimmerman)
9a5e66b normalize how refined record types are printed (Ilya Klyuchnikov)
f927b20 Populate function spec text (Katie Ots)
cb5d231 Populate type definition text and opaque flag (Katie Ots)
0c4989b Align equality (Ilya Klyuchnikov)
6cbd9a7 Bump postcss from 8.5.8 to 8.5.12 in /website (#192) (dependabot[bot])
4b5ce7c Emit src.File facts for included headers (Katie Ots)
8a747fd Populate record definition text (Katie Ots)
704cd14 Populate macro definition text (Katie Ots)
3544baa Emit macro declarations from full def_map (Katie Ots)
cf23ea0 Populate DeclarationComment facts (Katie Ots)
67592eb update elp_development.md to clarify test assertions (Alan Zimmerman)
0028282 one more test for debugging (Ilya Klyuchnikov)
1a591eb Track source span for module documentation (Katie Ots)
5e16814 Populate record field declarations (Katie Ots)
4e47fc7 fix serde (Ilya Klyuchnikov)
9cb7486 Populate FileIncludes facts (Katie Ots)
21357ad Extract is_nif from -nifs attribute (Katie Ots)
dd62fef Fix DefMap function_clauses key collision via InFile keys (Alan Zimmerman)
63aa049 Populate compile_options and is_on_load (Katie Ots)
074f8d0 Remove support for obsolete diagnostics descriptors (Roberto Aloi)
f762039 Convert no_calls_in_ct_all_groups linter to use a trait (Roberto Aloi)
8efc7d8 Remove dead code. (Roberto Aloi)
ecb1353 Convert deprecated_function linter to use a trait (Roberto Aloi)
5bcc8d6 Simplify deprecated_function linter — remove dead meta-only matches (Roberto Aloi)
84d0c15 Updating hashes (Open Source Bot)
97a0165 Populate callback declaration and definition facts (Katie Ots)
a70e20b Harden OSS CI rebar3 setup (Katie Ots)
9784531 Fix VarXRef target span (Katie Ots)
6eef144 Updating hashes (Open Source Bot)
5f64b8f Updating hashes (Open Source Bot)
0ab8b29 Do not run unused_record_field on generated files or test suites (Roberto Aloi)
c501948 Updating hashes (Open Source Bot)
94fed79 Skip module/type completions when no atom is at the cursor (Katie Ots)
29af4d2 Remove dead code (Roberto Aloi)
eb7366b Refactor application_env to use FunctionCallLinter trait (Roberto Aloi)
d246763 Scope BUCK file watching to project targets to prevent reload loops (Alan Zimmerman)
98f54ac Updating hashes (Open Source Bot)
a622d83 CT Diagnostics Cleanup (Roberto Aloi)
a058ea1 BE: Remove unused DefMap.function_clauses_by_fa (Alan Zimmerman)
b7ac3d8 Add erlang.2 dual-write tests (Katie Ots)
7d4ca95 Wire --schema2 dual-write (Katie Ots)
10c414c Add erlang.2 output type definitions (Katie Ots)
5ace807 Bump dompurify to >=3.4.0 to address vulnerability (Katie Ots)
f1dd5ce Bump uuid to >=14.0.0 to address vulnerability (Katie Ots)
66e022f Convert remove_trivial_assert_equal to GenericLinter trait (Roberto Aloi)
5b6d719 BE: Use ManuallyDrop in LoadResult to skip expensive destructor cascade (Alan Zimmerman)
faa5991 Updating hashes (Open Source Bot)
76d454a delete stale ambiguous_union error (Ilya Klyuchnikov)
0903b8d Convert remove_redundant_end_per_clauses to GenericLinter trait (Roberto Aloi)
f240cf7 Hoist matcher setup to file-level query (Tom Davies)
08089f2 LTI: better error reporting if there is no solution (Ilya Klyuchnikov)
a048c2b Constraints: holistic handling of union upper bounds (Ilya Klyuchnikov)
810190a better LTI (1) (Ilya Klyuchnikov)
8276a12 Remove Clippy customizations (Roberto Aloi)
fc70f2e Reduce repeated matcher work in call-based linters (Tom Davies)
07795c8 Move tree-sitter-erlang outside of ELP project (Roberto Aloi)
f75c0bb Update tree-sitter-erlang version to 0.16 (Alan Zimmerman)
b976f18 fix cargo builds (Ilya Klyuchnikov)
d233fae LTI: remove subtle optimization (Ilya Klyuchnikov)
ae70396 LTI: use subtyping more aggressively in Constraints (Ilya Klyuchnikov)
e9dec0b FConstraints: bug fix (Ilya Klyuchnikov)
dd1cdb3 more tests for type containment (Ilya Klyuchnikov)
d090c38 2/n: Atom/Var interning: remove no longer needed database parameters (Alan Zimmerman)
a4ad2d4 1/n: Switch Atom/Var from salsa interning to global Ustr interner (Alan Zimmerman)
d087eeb Updating hashes (Open Source Bot)
59a2038 Support named wildcard defaults in ets lookup lint (Tom Davies)
3c60e29 LTI - more transparent partial solutions (Ilya Klyuchnikov)
67affb4 Speed up hot diagnostic linters by skipping unused fix work (Tom Davies)
6222790 Convert W0008 (UnreachableTest) linter to GenericLinter (Roberto Aloi)
f5819d9 Convert W0021 (CannotEvaluateCTCallbacks) linter to GenericLinter (Roberto Aloi)
1cf9727 Add CT info to LinterContext (Roberto Aloi)
4295973 Updating hashes (Open Source Bot)
10b3628 Update SsrPatternsLinter to use LinterContext (Roberto Aloi)
20865bd a new test case (Ilya Klyuchnikov)
038fce1 Fix all clippy warnings in ELP (Roberto Aloi)
7eccbb8 propagate more information in LTI (1) (Ilya Klyuchnikov)
a077ee4 Update FunctionCallLinter to use LinterContext (Roberto Aloi)
67386ab Introduce LinterContext for the GenericLinter trait (Roberto Aloi)
6e2c387 Add --schema2 CLI flag for erlang.2 Glean output (Katie Ots)
d5f7c2f Convert W0022 linter to use a trait (Roberto Aloi)
b424508 fix typo (Ilya Klyuchnikov)
037e96a Updating hashes (Open Source Bot)
2573ff9 Add runs_on_save_only() to the Linter trait (Roberto Aloi)
e8ea4af 18/n OTP29: cross-module native record field rename (Alan Zimmerman)
4bcc8a3 17/n OTP29: Implement cross-module native record rename with import_record (Alan Zimmerman)
6425782 16/n OTP29: Implement native record rename with local usage and export_record (Alan Zimmerman)
2fd6c8d 15/n OTP29: Implement native record field rename (single module) (Alan Zimmerman)
30f84d3 14/n OTP29: Add export_record HIR support (EEP 79) (Alan Zimmerman)
6655719 13/n EEP 79: Add export_record to grammar and codegen (Alan Zimmerman)
3c18686 12/n OTP 29: Handle import_record in diagnostics and docs (EEP 79) (Alan Zimmerman)
6a06467 11/n OTP 29: Go-to-definition and references for import_record (EEP 79) (Alan Zimmerman)
6c77075 10/n OTP 29: HIR support for import_record attribute (EEP 79) (Alan Zimmerman)
66744d1 9/n OTP 29: EEP 79 import record attribute (Alan Zimmerman)
8d198e7 8/n OTP29: HIR lowering for native record types (EEP 79) (Alan Zimmerman)
6b37dae 6&7/n OTP29: Implement HIR lowering for native record patterns (EEP 79) (Alan Zimmerman)
3b6f3ea 5/n OTP29: SSR tests and fix matching for native record expressions (EEP 79) (Alan Zimmerman)
eca35bd 4/n OTP29: Implement HIR lowering for native record expressions (EEP 79) (Alan Zimmerman)
3636729 3/n OTP29: : Native records (EEP 79) (Alan Zimmerman)
79982d8 2/n OTP29: Implement multi-valued comprehensions (EEP 78) (Alan Zimmerman)
170fbad 1/n OTP29: Make function application left associative (Alan Zimmerman)
f7b321f rollback D101130877 (Ilya Klyuchnikov)
e28d11a rollback D85337629 (Ilya Klyuchnikov)
7a8e280 Sort crates features (Roberto Aloi)
654aa59 Sort list of deps (Roberto Aloi)
069c96f Remove unused deps (Roberto Aloi)
f976c77 Include code actions for CT diagnostics (Roberto Aloi)
aa0870b Updating hashes (Open Source Bot)
3a311d1 BE: Skip expensive destructor cascade on all CLI exits (Alan Zimmerman)
8bab62e Add error count summary to eqwalize --connect mode (Michał Muskała)
7d8489e keep aliases in refining (Michał Muskała)
7d41177 tests for keeping aliases in refining (Michał Muskała)
fe9aa4c Fix meet to unfold parameterized type aliases (Michał Muskała)
780463b Add test for meet with parameterized type aliases (Michał Muskała)
fe746fd Deduplicate FunctionBody/FunctionClauseBody lowering (Alan Zimmerman)
0c1a394 Clarify eqwalize command help: arguments are modules, not files (Michał Muskała)
93900ab Updating hashes (Open Source Bot)
433555b Bump expect-test from 1.5.0 to 1.5.1 (Roberto Aloi)
c55f477 Bump serde from 1.0.206 to 1.0.219 (Roberto Aloi)
9cb6694 Bump log from 0.4.22 to 0.4.29 (Roberto Aloi)
ca33800 Bump tempfile from 3.12.0 to 3.27.0 (Roberto Aloi)
d7f9cd2 Bump regex from 1.10.6 to 1.12.3 (Roberto Aloi)
c779a39 Bump serde_json from 1.0.124 to 1.0.140 (Roberto Aloi)
24d3944 Bump env_filter from 0.1.3 to 0.1.4 (Roberto Aloi)
72bfec5 Bump dissimilar from 1.0.9 to 1.0.11 (Roberto Aloi)
a4aae6f Bump jod-thread from 0.1.2 to 1.0.0 (Roberto Aloi)
a93e9bb Bump serde_with from 1.14.0 to 3.18.0 (Roberto Aloi)
3856176 Bump jemallocator and jemalloc-ctl from 0.5.* to 0.6.1 (Roberto Aloi)
13cd745 Bump test-case from 2.2.2 to 3.3.1 (Roberto Aloi)
8acdadb Bump rustyline from 17.0.2 to 18.0.0 (Roberto Aloi)
b1ea5b8 fix Constraints for #{..., dynamic() => dynamic()} case (Ilya Klyuchnikov)
32a59a8 fix FConstraints for #{..., dynamic() => dynamic()} case (Ilya Klyuchnikov)
6fe267b test for LTI with {..., dynamic() => dynamic()} shapes (Ilya Klyuchnikov)
b57358c test for type containment with {..., dynamic() => dynamic()} shapes (Ilya Klyuchnikov)
806c99f Bump always-assert to 0.2.0 (Roberto Aloi)
143477b Bump smol_str to 0.3.6 (Roberto Aloi)
53e485e Bump Rust Analyzer dependencies to 2026-04-13 (Roberto Aloi)
2decfcf Convert xtask codegen to Buck (Roberto Aloi)
88d94d8 BE:Clean up variant_str: remove unnecessary db parameter (Alan Zimmerman)
39e20a0 Updating hashes (Open Source Bot)
a1358fd BE: performance: cache body and placeholder info in SSR matching (Alan Zimmerman)
83378c1 BE: simplify SSR matching: use direct ID and enum comparison (Alan Zimmerman)
50640c8 wa_knobs/wa_gates disabled branch highlighting (Brian Suh (WhatsApp))
8983055 Remove obsolete slow tests (Roberto Aloi)
f7e1da1 Updating hashes (Open Source Bot)
c41ce92 Avoid dependencies with known vulnerabilities (Daniel Gorin)
a455de6 Updating hashes (Open Source Bot)
262c968 Fix formatting for W0051 (Roberto Aloi)
89f3436 Load erts and stdlib OTP apps automatically for eqwalizer test fixtures (Alan Zimmerman)
db3275e Type Containment (Ilya Klyuchnikov)
b2f1d7d eta expansion / type containment for monomorphic apps (Ilya Klyuchnikov)
00d7818 subtyping tests for type containment (Ilya Klyuchnikov)
9b1e010 Disable binary_string_to_sigil linter by default, provide guidance (Roberto Aloi)
d5cec9c Updating hashes (Open Source Bot)
230913f Short-circuit linter evaluation in case a diagnostic filter is active (faster arc lint) (Roberto Aloi)
a27fa90 elp_parse: Fix binary_op() and af_zip_generator() types (Michał Muskała)
0e5b165 elp_parse: Make function application left associative (Michał Muskała)
cc9e0ce Implement multi-valued comprehensions (EEP 78) (Michał Muskała)
c8f29e8 elp_lint: Add compr_assign feature and features field (Michał Muskała)
cca0682 elp_lint: Warn about exported variables from subexpressions (Michał Muskała)
1933055 elp_lint: Report 'and'/'or' operators as obsolete (Michał Muskała)
9826724 elp_lint: Warn about alias patterns that unify constructors (Michał Muskała)
74964d3 elp_lint: Add maybe_add_warning/3 helper (Michał Muskała)
a91dd3a Relax the lint_list test (Roberto Aloi)
7c970ba BE: improve glean test so failure is clearer. (Alan Zimmerman)
5f96b00 Share VFS change processing between watchman and server (Michał Muskała)
c75436d Robust large-scale file change handling in shell (Michał Muskała)
e73faa8 Extract watchman module from shell (Michał Muskała)
d1ef09d Add --connect and --format json support to eqwalize-target (Michał Muskała)
12eb677 Simplify try_main: match on &args.command (Michał Muskała)
15220a8 elp_lint: Add deprecated_catch warning (Michał Muskała)
814aef7 elp_lint: Schedule old style type tests for removal in OTP 30 (Michał Muskała)
3e1d397 Add native daemon mode for fast eqwalizer turnaround (Michał Muskała)
f59b054 Add linter benchmarking script (Roberto Aloi)
b8a49df BE: fix failing lint_list test (Alan Zimmerman)
a57003b Fix GitHub CI - formatting and tests (#186) (Marc-André Poulin)
79a2ad0 Add lint-list command to dump all available diagnostics (Roberto Aloi)
bb84be2 Add duplicate include diagnostic (W0078) (Tom Davies)
fdeae63 Detect eqwalizer:dynamic_cast/1 as escape hatch (W0075) (Victor Lanvin)
7dc29df Convert the module mismatch linter to use a trait (Roberto Aloi)
f005b4e If --arc-patch is specified, just assume --format json (Roberto Aloi)
b41bf7b elp_lint: Fix guard check for is_record/2 (Michał Muskała)
f6259bb Add --arc-patch flag to populate original/replacement in JSON lint output (Roberto Aloi)
71bf64f Gracefully skip unsupported --module/--file targets in lint CLI (Roberto Aloi)
5270f01 Show docs for fun foo/1 (Alan Zimmerman)
dd48586 Trim elp_development.oss.md by ~85% to non-deducible content only (Alan Zimmerman)
914aa5e Extract Glean indexer tests to glean/tests.rs (Katie Ots)
1a94dea Extract Glean indexer output logic to glean/output.rs (Katie Ots)
803ff02 Extract Glean indexer types to glean/types.rs (Katie Ots)
083f237 elp_lint: Eliminate bottleneck when there are many clauses (Michał Muskała)
42c48cd Remove v1 Glean indexing path (Katie Ots)
e4cffda Detect ?DYNAMIC_CAST as eqwalizer escape hatch (W0075) (Victor Lanvin)
899486c Fix formatting in ELP glean (Katie Ots)
176bbf9 Go-to-references should consider supervisor childspecs (Alan Zimmerman)
5df96e3 Fix eqwalizer exception in declaration_v2_types_test (Alan Zimmerman)
8c3c3d8 Optimise WA031 wid_as_key linter (Tom Davies)
a07ec5a BE: Introduce LintFixSettings builder for lint fix tests (Alan Zimmerman)
ddeaba9 Fix doc block markdown highlighting leak on malformed content (Balaji S)
c0630c4 Update smol_str from 0.1.24 to 0.2.2 (David Tolnay)
41dc058 Cache project loading in tests (Tom Davies)
33cd7e6 Parallelize LSP server diagnostic dispatch (Tom Davies)
16f841a Fix include resolution for generated files in buck-out (Alan Zimmerman)
90d6b43 Cache define indexes per file instead of rebuilding per diagnostic (Alan Zimmerman)
e1905c1 Add quick fix for undefined record diagnostics (Alan Zimmerman)
0a2a897 Add early bailout for record_tuple_match linter (Tom Davies)
30fb2e8 Add unused_exported_functions (W0077) linter (Roberto Aloi)
2129f63 More efficiently schedule parallel jobs: ~13% faster parse-all (Tom Davies)
de65108 Semantic highlighting of format string specifiers (Tom Davies)
2f01e70 BE: Fix Term::MacroCall.args to use TermId instead of ExprId (Alan Zimmerman)
eec9300 BE: Add declarative tests for WA032 use_log_st_macros diagnostic (Alan Zimmerman)
b945380 Add W0076: validate -dialyzer() attribute contents (Tom Davies)
9e0dc6a Add --format json support to eqwalize-app (Michał Muskała)
79fa680 Add metrics collection to Glean indexer (Katie Ots)
6254155 BE: Add //- otp_apps: fixture directive to include real OTP modules (Alan Zimmerman)
6570cd4 Fix type navigation broken with macros (Alan Zimmerman)
5e3dc8a accept repeated --file args (Brian Suh (WhatsApp))
8336194 Updating hashes (Open Source Bot)
b52f601 Prioritize local types over modules in completion sort order (Balaji S)
036ffc2 Sort test snapshots by sort_text then label (Balaji S)
31ad862 Add test for local types and modules in type context (Balaji S)
516c62d Fix W0020 false positive for headers defining exported functions (Alan Zimmerman)
424b35f feat: add --severity flag to elp lint (#180) (Daniel Widgren)
fc3c25f Fix "Find References" for dynamic calls from macros (Katie Ots)
402aacf Add progress bar to lint command (Roberto Aloi)
821872a Add WA031 diagnostic: use_log_st_macros (Brian Suh (WhatsApp))
50a0fdd npm audit fix (Alan Zimmerman)
419b1eb Add focus_range telemetry to goto_definition (Alan Zimmerman)
9888962 standard serde for keys in map types (Ilya Klyuchnikov)
76cc891 add another test case (Brian Suh (WhatsApp))
bd0ab0c Include peer functions among dynamic calls (Roberto Aloi)
5bb26cf Remove edoc diagnostics support (Roberto Aloi)
5c75f95 enum Specifier (Ilya Klyuchnikov)
af448f6 Migrate simplify_negation linter to use Linter trait (Roberto Aloi)
041f8ca Migrate nonstandard_integer_formatting linter to use Linter trait (Roberto Aloi)
d7ef661 Migrate expression_can_be_simplified linter to use Linter trait (Roberto Aloi)
8b2ac64 Increase severity of eqwalizer escape hatch lints to Warning (Victor Lanvin)
dd8efbe Migrate dependent_header linter to use Linter trait (Roberto Aloi)
ea84c40 Document _ = catch Expr pattern in conversion guide (Michał Muskała)
06c2016 Migrate head_mismatch linter to use Linter trait (Roberto Aloi)
e469ff0 Migrate effect_free_statement linter to use Linter trait (Roberto Aloi)
138d5c3 Migrate unused_function_args linter to use Linter trait (Roberto Aloi)
706e907 Migrate redundant_assignment linter to use Linter trait (Roberto Aloi)
d341514 Migrate trivial_match linter to use Linter trait (Roberto Aloi)
7830b8a Migrate record_tuple_match linter to use Linter trait (Roberto Aloi)
10d4503 Migrate mutable_variable linter to use Linter trait (Roberto Aloi)
0da0466 Updating hashes (Open Source Bot)
fe065f1 skip fixpoint iteration for acyclic SCCs in variance computation (Michał Muskała)
343fb13 precompute type alias param variances in ELP stubs (Ilya Klyuchnikov)
d2c0619 Fix GitHub CI issue (#179) (Roberto Aloi)
7f4f60f use SCC for trans-validation (Ilya Klyuchnikov)
82903b8 prepare tests (Ilya Klyuchnikov)
eb50a79 less cryptic message (Ilya Klyuchnikov)
36a8bbd fix/unify validation logic of callbacks (Ilya Klyuchnikov)
8511219 Remove redundant mechanism to suppress diagnostics (Roberto Aloi)
0063384 Convert unsafe_integer_conversion linter to use a trait (Roberto Aloi)
53e7408 Fix name of sets_version_2 linter (Roberto Aloi)
b17bddc Add _W0052.md stub for OSS website build (Michał Muskała)
48cddda Improve "Avoid catch" diagnostic docs based on codemod feedback (Michał Muskała)
bda6cbd Refactor DiagnosticCode to use strum derive macros (Roberto Aloi)
8ec34eb Remove dead Mocha test scaffolding (Roberto Aloi)
c4d9b3a npm audit fix (Roberto Aloi)
015ee3c Add resolution for serialize-javascript (Roberto Aloi)
5bb740c yarn upgrade (Roberto Aloi)
4491f66 Normalize BASE_URL in test fixtures (Roberto Aloi)
852c854 Disable WA003 in test fixtures (Roberto Aloi)
e4b1449 Fix W0019 expression simplification to preserve parentheses (Daniel Gorin)
84b6c24 Deprecate --include-tests option for lint command (Roberto Aloi)
b05c7fa Generalize statement_range to accept &SyntaxNode (Pulkit Agarwal (WhatsApp))
09b6116 Updating hashes (Open Source Bot)
ba93fbe Add def_map_simple to bypass def_map_with_env when ifdef=false (Alan Zimmerman)
e6c44de Skip preprocessor condition processing when ifdef=false (Alan Zimmerman)
87ee792 using de Bruijn indices (Ilya Klyuchnikov)
57c45ec BoundVarType (Ilya Klyuchnikov)
fdc9362 VarType -> FreeVarType (Ilya Klyuchnikov)
f3a676f convert_types: use IndexSet (Ilya Klyuchnikov)
c60ec41 Disable W0018 diagnostic (Roberto Aloi)
a98174d Do not report unused includes for generated files by default (Roberto Aloi)
ce85ab3 Add --path filter to lint command (Roberto Aloi)
83703cf merge duplicate code (Ilya Klyuchnikov)
ee8f2f2 Eliminate duplicated logic between evaluate and evaluate_to_value (Alan Zimmerman)
fc765d7 Use known::TEST and known::DEBUG instead of Name::from_erlang_service in MacroEnvironment::with_test_macros (Alan Zimmerman)
b00b532 Gate ifdef-stack preprocessor callers behind ifdef_enabled (Alan Zimmerman)
c73231b Updating hashes (Open Source Bot)
db7f2be type stacktrace in catch clause as erlang:stacktrace() (Brian Suh (WhatsApp))
d4a3336 9/n file_id check: Use FileRange in GenericLinter to auto-filter cross-file matches (Alan Zimmerman)
dc40148 8/n file_id check: Make file_id mismatch check automatic in SSR diagnostic API (Alan Zimmerman)
55d6bfd 5/n file_id check: Add defensive file_id check to UncheckedCast SSR diagnostic (Alan Zimmerman)
21d1bd5 4/n file_id check: Add file_id check to inefficient_list_empty_check SSR diagnostic (Alan Zimmerman)
526cafb 3/n file_id check: Add defensive file_id check to binary_string_to_sigil SSR diagnostic (Alan Zimmerman)
5b6e5bc 2/n file_id check: Add file_id check to encode_hex_with_case SSR diagnostic (Alan Zimmerman)
c5a824a 1/n file_id check: Add file_id check to lists_reverse_append SSR diagnostic (Alan Zimmerman)
09aa21b more sorted/deterministc foralls (Ilya Klyuchnikov)
a0407bb Add linters for eqwalizer escape hatches (W0073, W0074, W0075) (Victor Lanvin)
ab0ace9 Prevent "Can't find module" errors (Roberto Aloi)
c27d21b Rename MacroEnvironment::predefined to externally_defined (Alan Zimmerman)
94f8575 Rename new_ifdef to ifdef (Alan Zimmerman)
9cd1d7a 9/n macro-state: Add test for point-in-file macro state in doc attributes (Alan Zimmerman)
3a8e323 8/n macro-state: Use point-in-file macro state for attribute body lowering (Alan Zimmerman)
286e3cb 7/n macro-state: Use point-in-file macro state for record body lowering (Alan Zimmerman)
95c7601 6/n macro-state: Use point-in-file macro state for callback body lowering (Alan Zimmerman)
21b4061 5/n macro-state: Use point-in-file macro state for spec body lowering (Alan Zimmerman)
ee4ab36 4/n macro-state: Use point-in-file macro state for define body lowering (Alan Zimmerman)
b7969fc 3/n macro-state: Use point-in-file macro state for type body lowering (Alan Zimmerman)
93b29ba 2/n macro-state: Use point-in-file macro state for function body lowering (Alan Zimmerman)
1bccea4 1/n macro-state: Add per-ConditionEnvId macro snapshot infrastructure for body lowering (Alan Zimmerman)
3764263 4/4 ifdef: Simplify local_resolve_macro by delegating to preprocessor state (Alan Zimmerman)
53db0a1 3/4 ifdef: Store per-condition macro snapshots and use them in condition_body_with_source_query (Alan Zimmerman)
2d73bdc 2/4 ifdef: Break Salsa cycle in -if/-elif condition evaluation (Alan Zimmerman)
e51f7b8 1/n ifdef: Track macro definition locations in preprocessor snapshot (Alan Zimmerman)
1a1ff61 Make case_to_function_clauses handle outliving bindings (Tom Davies)
6aa787c Offer to extract case expressions as a function with multiple clauses (Tom Davies)
117276a Add 'Extract case to function clauses' assist (Tom Davies)
275221e Allow explicit suppression of unused record field diagnostic (Tom Davies)
f3bb9aa Bump minimatch in /editors/code/client (#169) (dependabot[bot])
a556fee Bump minimatch from 3.1.2 to 3.1.5 in /editors/code (#168) (dependabot[bot])
3711892 Add quick-fix to UnusedRecordFieldLinter (Tom Davies)
8f461b3 Move meck_restricted linter from meta_only to open source (W0068) (Pulkit Agarwal (WhatsApp))
28387c1 ifdef: Fix cross-app include chains failing to resolve macros (Alan Zimmerman)
651dd24 ifdef: predefine ELP_ERLANG_SERVICE macro (Alan Zimmerman)
188e665 Fix ifdef/ifndef taking wrong branch for built-in macros (Alan Zimmerman)
6fae773 Always report syntax errors (Roberto Aloi)
32dd5c9 Insert includes in alphabetical order (Balaji S)
73d1448 Add test for include insertion order (Balaji S)
72a3780 Improve no_catch diagnostic guidance (Roberto Aloi)
09bfe5e 6/n def-map: Add tests for env-aware ifdef in included headers (Alan Zimmerman)
d11a989 5/n def-map: Delegate def_map_query to def_map_with_env (Alan Zimmerman)
cc99884 4/n def-map: Wire macro environment through def_map_with_env_query (Alan Zimmerman)
dd9b4a3 3/n def-map: Extract build_local_impl from def_map_local_query (Alan Zimmerman)
9a4c38f 2/n def-map: Add def_map_with_env salsa query (stub) (Alan Zimmerman)
ee6615d 1/n def-map: Extend PreprocessorAnalysis with per-include macro environments (Alan Zimmerman)
51d92f8 5/n appid: Fix dep check for chained cross-app includes (Alan Zimmerman)
89ba9ad 4/n appid: Thread AppDataId through all remaining resolve_include callers (Alan Zimmerman)
a52c5dd 3/n appid: Thread AppDataId through file_preprocessor_analysis (Alan Zimmerman)
e36c5c4 Remove unused dependencies (Roberto Aloi)
5ead560 2/n appid: Thread AppDataId through def_map include resolution (Alan Zimmerman)
5f4a6a8 1/n appid: Thread AppDataId through include resolution (Alan Zimmerman)