2025-02-12
Highlights
- Semantic Search and Replace
- New eqwalizer, including better type mismatch analysis
- Bump Tree Sitter grammar
- Remove false positives for
behaviour_info
inundefined_function
linter - Highlight all function clauses, not just the first one
- Ensure we auto-complete records in function signatures
- Add funs in
undefined_function
analysis - Allow configuring multiple apps/deps patterns via
.elp.toml
- Several bug fixes and performance improvements
New Diagnostics
- Unnecessary flattening to find flat length
- Unnecessary Reversal To Find Last Element Of List
maps:put
rather than syntaxmaps:find
rather than syntaxlists:zip
withlists:seq
rather than enumerate- Unnecessary Intermediate List In Comprehension over Map
- Unnecessary fold to build map
VS Code
- Better Renaming when extracting variables/functions
Full Changelog
8d0c680 Restore "Analyze Stacktrace" functionality (Roberto Aloi)
9189988 filter common_test::exportable_test_ranges by file_id (Alan Zimmerman)
ba4a99f Avoid map comprehensions for older Erlang (Michał Muskała)
cf8accc erlang_service_ct: inrepret module instead of compiling (Michał Muskała)
66d166a clamp range from common_test::unreachable_test (Alan Zimmerman)
eaac6b5 ssr: properly match Pat::Literal (Alan Zimmerman)
863d44a Better type mismatch analysis (Victor Lanvin)
bfd3f5f Limit the max size of logged eqwalizer errors (Alan Zimmerman)
e832fa7 Bump OSS tree-sitter-erlang crate version (Alan Zimmerman)
388c0ad Bump version to 0.12.0 (Alan Zimmerman)
8033c49 Allow exprs in the source_file grammar rule (williamthome)
01c58ce Move error uri at the top (Victor Lanvin)
1361dc6 buck-bxl: make sure eqwalize-all does not process test files (Alan Zimmerman)
c938ca9 Fix tests on master (Alan Zimmerman)
5c59744 Migrate SSR-based diagnostics to use more efficient API (Tom Davies)
36ce0a7 Unnecessary explicit fold to build a map (Tom Davies)
ede9aa2 Re-sync with internal repository (#81) (Facebook Community Bot)
4d52d4a Add test for lowering with error nodes (Alan Zimmerman)
1da8b08 Add stats option to elp eqwalize-all
(Alan Zimmerman)
1917460 BE: move CLI stats functions from erlang_service to reporting (Alan Zimmerman)
6612edd optimisation (Ilya Klyuchnikov)
b26c920 BE: remove unwrap()
from recent new diagnostics (Alan Zimmerman)
96a8be7 Better error message for bad map keys (Victor Lanvin)
20258d3 Add support for CodeActionResolve (Roberto Aloi)
ec3f30c Add shebang form for escripts (Alan Zimmerman)
9e55192 Fix Drop for Server
deadlock behavior (#75) (Michael Davis)
5608951 Separate new diagnostics into individual codes (Tom Davies)
7058883 Bump recursion limit (Tom Davies)
62bacef Mark optimising diagnostics as simplification rules (Tom Davies)
804af6c Fix incorrect lint reference (Tom Davies)
f134114 Migrate optimising diagnostic to a dedicated diagnostic code (Tom Davies)
7256f71 Rewrite inefficient list comprehensions (Tom Davies)
b42a053 Rewrite taking the head of a reverse list to just taking the last element (Tom Davies)
53b3437 Rewrite a zip over a seq to an enumerate (Tom Davies)
b939122 Rewrite an immediate match on maps:find to use map syntax (Tom Davies)
e0dc14e Add diagnostic to rewrite map insertion function to equivalent syntax (Tom Davies)
1966caa Migrate inefficient flatlength to SSR (Tom Davies)
4853bfa Report inefficient flatlength computation (Tom Davies)
625f41b bump tree-sitter-erlang dependency to 0.11.0 (Alan Zimmerman)
cb1091f Re-sync with internal repository (#80) (Facebook Community Bot)
8bb944e bump version to 0.11.0 (Alan Zimmerman)
337709b ssr: search context for functions only (Alan Zimmerman)
d73b355 ssr: improve matching for PatternMap iterator (Alan Zimmerman)
0e7598e Re-sync with internal repository (#78) (Facebook Community Bot)
163898d Re-sync with internal repository (#77) (Facebook Community Bot)
37eb9c1 Do no complain about undefined behaviour_info when the target module defines callbacks (Thibault Suzanne)
75893ff EEP70 strict generators in erlang_service (Alan Zimmerman)
2a99a4c EEP70 strict generators in HIR (Alan Zimmerman)
a45eb4f EEP70 strict generators (Alan Zimmerman)
addf42b Highlight all function clauses, not just the first one (Roberto Aloi)
b6c7994 Add test case showing missing highlight for multiple-clause function (Roberto Aloi)
6750dab Ensure we auto-complete records in function signatures (Roberto Aloi)
89a4407 Make ctx debuggable, fix argument name (Roberto Aloi)
a937714 Bump version of upload-artifact plugin (Roberto Aloi)
3f2812f ssr: do not match the Pat
variant of an ssr pattern if it lowers as Pat::Missing
(Alan Zimmerman)
54dc446 BE: ssr: introduce PatternIterator::Leaf (Alan Zimmerman)
2dbb698 ssr: match repeated placeholder (Alan Zimmerman)
315d578 ssr: pass pattern SubId for code SubId into matcher (Alan Zimmerman)
e444466 BE: inline MatchFinder::try_add_match (Alan Zimmerman)
2ffd2db ssr: store matches by placeholder SubId
(Alan Zimmerman)
1ba7727 make find_call_in_function also check funs (Andreas Löscher)
d8f58c8 add arity to CheckCallCtx args (Andreas Löscher)
211e328 Fix scan_vstring wrong call (Balaji S)
b1c5d9c BE: ssr: Move SsrSearchScope into the elp_ide_ssr crate (Alan Zimmerman)
1742fe6 ssr: remove no-longer-accurate comment (Alan Zimmerman)
5eb489d BE: Rename SsrIdx to SsrSearchScope (Alan Zimmerman)
ea6a685 BE: Remove unused function warning from master (Alan Zimmerman)
e000df5 BE: harmonise names for range_for_any / text_for_any (Alan Zimmerman)
a22fd0a ssr: add functions to retrieve range and source text for a placeholder (Alan Zimmerman)
68d45a0 Introduce function to retrieve the text for AnyExprId
(Alan Zimmerman)
d3e6342 ssr: introduce SubId::any_expr_id()
(Alan Zimmerman)
2c22b14 BE: include the ExprId and PatId when tree printing an HIR tree (Alan Zimmerman)
92cef9b BE: improve tree_print::print_term (Alan Zimmerman)
ce18462 BE: improve tree_print::print_type (Alan Zimmerman)
8782aea BE: improve tree_print::print_pat (Alan Zimmerman)
ab6f23b BE: improve tree_print::print_expr (Alan Zimmerman)
452ac5c ssr: add test for multiple receive clauses (Alan Zimmerman)
9bc6ebe BE: improve debug print of SsrPlaceholder (Alan Zimmerman)
ce98bb9 Allow custom app data in .elp.toml (Roberto Aloi)
0c1c8ca migrating wid_tuple erlint diagnostic (Alan Zimmerman)
ba105b0 46/n: ssr: Simplify the search process (Alan Zimmerman)
992578b Extend call hierarchy to include fun reference (Alan Zimmerman)
8b43ae2 45/n: ssr: match macro calls (Alan Zimmerman)
ddc8429 44/n: ssr: record macro call name in HIR (Alan Zimmerman)
f8f68c1 43/n: ssr: remove todo!()'s in matching (Alan Zimmerman)
e16635a 42/n: ssr: use fold::Strategy when doing a match (Alan Zimmerman)
60e1695 41/n: ssr: BE: improve PatternIterator::new_any_expr (Alan Zimmerman)
fd3ff16 40/n: ssr: match parens (Alan Zimmerman)
c8e0f9b 39/n: ssr: match if clause (Alan Zimmerman)
da2c306 38/n: ssr: simplify retrieving placeholder results for a match (Alan Zimmerman)
889d646 37/n: ssr: Initial processing of when guards (Alan Zimmerman)
ae39325 36/n: ssr: simplify lowering of SsrBody.when (Alan Zimmerman)
7478dea 35/n: ssr: add match_pattern_in_file for API (Alan Zimmerman)
6ed586a 34/n: ssr: do not match terms yet, but do not blow up (Alan Zimmerman)
728a233 33/n: ssr: Do not match types yet, but do not blow up (Alan Zimmerman)
0b6ad81 32/n: ssr: match Pat::Map (Alan Zimmerman)
71f833c 31/n: ssr: match Pat::RecordIndex (Alan Zimmerman)
c295627 30/n: ssr: match Pat::Record (Alan Zimmerman)
30525e6 29/n: ssr: match Pat::BinaryOp (Alan Zimmerman)
1f60d45 28/n: ssr: match Pat::UnaryOp (Alan Zimmerman)
394e31c 27/n: ssr: match Pat::Binary (Alan Zimmerman)
355f126 26/n: ssr: match Pat::Match (Alan Zimmerman)
9f6ffa8 25/n: ssr: match Expr::Maybe (Alan Zimmerman)
e1e7771 24/n: ssr: match Expr::Closure (Alan Zimmerman)
04f142a 23/n: match Expr::CaptureFun (Alan Zimmerman)
d3ac4bc 22/n: ssr: match Expr::Try (Alan Zimmerman)
7c45306 21/n ssr: match Expr::Receive (Alan Zimmerman)
0476a69 20/n: ssr: match Expr::Case (Alan Zimmerman)
d3c035e 19/n: ssr: match Expr::Comprehension (Alan Zimmerman)
96966bd 18/n: ssr: match Expr::Catch (Alan Zimmerman)
0ec6040 17/n: ssr: match Expr::MapUpdate (Alan Zimmerman)
4766c07 16/n: ssr: match Expr::Map (Alan Zimmerman)
8b20cca 15/n: ssr: match Expr::RecordField (Alan Zimmerman)
626c67b 14/n: ssr: match Expr::Recordindex (Alan Zimmerman)
6d9378b 13/n: ssr: match Expr::RecordUpdate (Alan Zimmerman)
2cf9f83 12/n: ssr: match Expr::BinaryOp (Alan Zimmerman)
4c31d6c 11/n: ssr: match Expr::UnaryOp (Alan Zimmerman)
1580520 10/n: ssr: add match in Expr::List (Alan Zimmerman)
6a82c1d 9/n: ssr: match on record field names too (Alan Zimmerman)
8ed8c40 8/n: ssr: Add match on record (Alan Zimmerman)
4fa55b0 7/n: ssr: Add match test on Expr::Tuple (Alan Zimmerman)
e64721a 6/n: ssr: Add match test on Expr::Block (Alan Zimmerman)
8c7deb7 5/n: ssr: Add first match (Alan Zimmerman)
e57e2b1 4/n: ssr: introduce ide_ssr crate (Alan Zimmerman)
609610d 3/n: ssr: Introduce SsrBody (Alan Zimmerman)
84d8738 add hir::Pat::Paren to track parens (Alan Zimmerman)
cf8dd5a BE: Use only backticks in config markdown help text (Alan Zimmerman)
73d2c94 Allow configuring multiple apps/deps patterns via .elp.toml (Roberto Aloi)
d976a17 Remove unused reference to DEFAULT_BUCK_TARGET (Roberto Aloi)
67c3fe5 Disable TSC auto-detection (Roberto Aloi)
5ee8019 Add debug launch configuration (Roberto Aloi)
0d2787e Print actual buck2 command in case of error (Roberto Aloi)