Skip to content

Releases: WhatsApp/erlang-language-platform

2024-12-09

09 Dec 15:30
Compare
Choose a tag to compare

Highlights

New Features

  • Auto-completion for maps
  • Add support for documenting types via -doc attribute
  • Allow configuring native diagnostics to be on-save only
  • Foldable ranges for -moduledoc and -doc attributes

Bug Fixes and Reliability Improvements

  • More reliable outline and breadcrumbs
  • Smarter unused-include auto-fix
  • More accurate Buck2 project model
  • Newer eqWAlizer
  • Escape runnable code lenses
  • Prevent completion within comments
  • Restrict ranges for type calls to name only when possible
  • Flush diagnostics when a document changes

CLI

  • Add -bail-on-error flag for eqWAlizer commands
  • Enable JSON output for elp eqwalize

Website

  • Upgrade ELP website to Docusaurus 3

Full Changelog

b5ae5c3 Regenerate yarn.lock file (Roberto Aloi)
6cff2fc Bump extension to 0.32.0 for release (Roberto Aloi)
5d4e199 Back out "Check for at least OTP 27 when running elp CLI commands that need it" (Roberto Aloi)
204f392 Upgrade to Docusaurus 3.6.3 (Roberto Aloi)
7900c31 Add --bail-on-error to EqWAlizer commands (Roberto Aloi)
c1b794b Infer required keys in return of maps:with when open shape has dynamic() keys (Rui Gonçalves)
1d27f9f Document ignore by name (Roberto Aloi)
bdb8fc9 Reliably process 'textDocument/documentSymbol' on startup (Alan Zimmerman)
a26383c Add support for type docs (Roberto Aloi)
08dd772 Auto-completion for maps (Roberto Aloi)
85d01ae Check for at least OTP 27 when running elp CLI commands that need it (Alan Zimmerman)
30bcc2d Improve accuracy of maps:with eqWAlizer return type (Rui Gonçalves)
65fcf81 Improve the progress reporting when loading (Alan Zimmerman)
7603e33 Add telemetry for go to def destination (Alan Zimmerman)
30cc5da Ad-hoc support for simple map comprehensions (Victor Lanvin)
e704b33 Map comprehension snapshot test (Victor Lanvin)
56815a3 Cleanup and unify map boilerplate (Victor Lanvin)
c716b66 Reuse helper for adjacent newline in unused include quick-fix (Roberto Aloi)
54153e2 36/n: use FileId to access AppData for include_lib (Alan Zimmerman)
d05dbe6 35/n: set app_data_id for all files in IDE mode (Alan Zimmerman)
74cb655 34/n: Provide --buck-bxl CLI arg for elp server (Alan Zimmerman)
7d40d15 33/n: BE: using chunking in loader config for better progress reporting (Alan Zimmerman)
5c4784d 32/n: BE: break out loader_config function (Alan Zimmerman)
dbfdebd 31/n: use abs_src_dirs for buck, final CLI accuracy (Alan Zimmerman)
7ed283f 30/n: Only load prelude targets that are used (Alan Zimmerman)
90724cb 29/n: Add BuckTarget origin field (Alan Zimmerman)
6225dec 28/n: break out make_buck_target (Alan Zimmerman)
e809e16 27/n: Update test results for elp.bxl change (Alan Zimmerman)
ee15e06 Reuse logic for deletion (Roberto Aloi)
342e874 Move parse out of for loop (Roberto Aloi)
3bbe6a4 Extract helpers for adjacent newline (Roberto Aloi)
1cacc16 Fix typo s/rage/range (Roberto Aloi)
ffaffaa 24/n: Add extra field to BuckConfig for deps_targets (Alan Zimmerman)
c4f0c34 22/n: elp.bxl: include prelude in targets to be searched (Alan Zimmerman)
73085ae 21/n: buck:Add included file to applicable files too (Alan Zimmerman)
d94f8b3 20/n: buck:populate extra_src_dirs (Alan Zimmerman)
17c4cd1 19/n: buck: always load all applicable files (Alan Zimmerman)
47ce19b 18/n: buck: load all local include dirs for a target (Alan Zimmerman)
8a84199 17/n: buck: add target local dirs for include resolution (Alan Zimmerman)
8894f81 16/n: process included_apps for include path (Alan Zimmerman)
908ac62 15/n: compute module index based on file_id AppData (Alan Zimmerman)
a4884fc 14/n add AppData.is_test_target, for buck test target apps (Alan Zimmerman)
5130229 13:n: Create a map of FileId to AppDataId (Alan Zimmerman)
9729015 12/n: Add ApplicableFiles to ProjectAppData (Alan Zimmerman)
de31f7e 11/n: include test targets in project model (Alan Zimmerman)
91b8b15 10/n: put src path into includes if there is a .hrl there (Alan Zimmerman)
322d322 Fix oncall s/whatsapp_developer_tools/vscode_erlang/g (Roberto Aloi)
2d4aa02 Escape runnable code lenses (Roberto Aloi)
5940cc8 If --include-edoc-diagnostics is specified, report EDoc diagnostics without requiring explicit listing (Roberto Aloi)
2541fd6 9/n: Find app root based on BuckTarget info only (Alan Zimmerman)
0decf14 8/n: Remove duplicates in Vfs loader config (Alan Zimmerman)
bdec080 7/n: Start doing new gen ProjectAppData (Alan Zimmerman)
e0fbea6 Add error index page for L1500 (Roberto Aloi)
aa2f01f Add OTP 27 Pipeline (Roberto Aloi)
60d05a1 Fix tests for pre-otp-27 versions (Roberto Aloi)
a9170fd Prevent completion within comments (#66) (Michael Davis)
c187851 6/n: Add ProjectAppData.applicable_files field (Alan Zimmerman)
4978fef 5/n: read apps and deps from bxl (Alan Zimmerman)
499dee9 4/n do not add global includes to buck if getting includes via bxl (Alan Zimmerman)
7c769a5 3/n: Update elp.bxl to improve dependency information (Alan Zimmerman)
b226319 2/n Remove un-necessary buck query config parameters (Alan Zimmerman)
945ef75 1/n: Split out buck processing for old and new (Alan Zimmerman)
943d3c7 BE: Add OTP version to the initial LSP server pop-up message (Alan Zimmerman)
e8d59f8 Restrict ranges for type calls to name only when possible (Roberto Aloi)
9173af2 Bump vulnerable cross-spawn dependency (Roberto Aloi)
125337d Remove obsolete activation event for VS Code extension (Roberto Aloi)
f812526 Read string representation of Eqwalizer diagnostic codes (Alan Zimmerman)
3019783 Add testcases for parametrized types (Roberto Aloi)
bfb0d09 Upgrade to Docusaurus 3.6.2 (Roberto Aloi)
8a1900c Honour disabled diagnostics when reporting EDoc diagnostics (Roberto Aloi)
1ea7460 Add extra debugging info when the eqwalizer command spawn fails (Alan Zimmerman)
964af91 Optionally dump stats on elp parse-all (Alan Zimmerman)
7b457b2 BE: improve 'elp parse-all' progress bar total (Alan Zimmerman)
a7aad28 Include source and root dirs in generated project model includes (#64) (Michael Davis)
c610e66 BE: be explicit about requesting eqwalizer and erlang service diagnostics in IDE (Alan Zimmerman)
76b2867 Honour .elp_lint.toml disabled diagnostics for erlc in IDE (Alan Zimmerman)
6a522eb Calculate IDE diagnostics config in one place only (Alan Zimmerman)
2caafa9 Fix github CI (Alan Zimmerman)
7dc5abb Upgrade cross-spawn dependency (Alan Zimmerman)
a6b5b95 Tracking down "stuck" diagnostics (Alan Zimmerman)
168d8e6 Allow configuring native diagnostics to be on-save only (Alan Zimmerman)
a7fce3a Flush diagnostics when a document changes (Alan Zimmerman)
a2e373c enable JSON output for elp eqwalize (Alan Zimmerman)
0bca86f tests for known problems (Ilya Klyuchnikov)
c3393f8 merge tests (Ilya Klyuchnikov)
d51514d Add occurrence typing to maps:fold (Victor Lanvin)
bf535c4 maps:fold snapshot tests with occurrence typing (Victor Lanvin)
114df71 Custom type checking of maps:intersect (Victor Lanvin)
1c35b4d maps:intersect snapshot tests (Victor Lanvin)
dcf2cc0 Use Variable for base of dynamic() type semantic highlighting (Alan Zimmerman)
eb777d5 BE: switch include processing to use FileId not SourceRootId (Alan Zimmerman)
31a4b8c Remove no-longer-used config option (Alan Zimmerman)
9e43b09 Remove --buck-deps-includes command line arg (Alan Zimmerman)
7770d92 Refactor folding (Roberto Aloi)
25b7de3 Foldable ranges for (module)doc attributes (Roberto Aloi)

2024-11-07

07 Nov 15:33
Compare
Choose a tag to compare

🚀 Highlights

[BREAKING CHANGE] Native rebar3 Support

ELP does not rely any longer on the build_info rebar3 plugin, whose functionality has been integrated in rebar3 directly. This means that, to auto-discover rebar3 projects, ELP now requires rebar3 3.24.0 version or higher. For more information please refer to the docs.

Support for EEP 59 Documentation Attributes

ELP now understands Erlang documentation in Markdown format. The documentation will be automatically available on hover and during auto-completion for both OTP libraries and project files.

Improved Unused Record Field Name Linter

The linter was very noisy when defining new records. We now restrict the warning to the record field name and not to the whole definition (i.e. its eventual type and default value). We also silent the linter if the record as a whole is unused.

Quick-fix: export a private function

You can now export a private function with a single click (or via a keyboard shortcut).

Linter: Tuple-matching on records

Matching on the internal, tuple, representation of a record is usually a bad smell. A new linter can now detect those occurrences and raise a warning. See W0027 for more details and examples.

Linter: Fully Qualified Calls to Un-exported Functions

Ever tried to call a non-exported function from a different module? ELP can detect these instances natively, so you don't have to rely on the slower XRef. It can even auto-fix it for you. See W0026 for details.

New, improved eqWAlizer

The extension includes a new version of eqWAlizer which, in addition to various fixes and improvements, enables additional type-checking of overloaded specs.

Semantic highlight for dynamic() variables

When type information are available, highlights variables with EqWAlizer dynamic() type in bold, for easier identification. The feature is disabled by default and can be enabled via a setting.

New Tree Sitter Version

  • Bump tree-sitter to 0.23.0
  • Bump tree-sitter-erlang to 0.9.0

𝌡 Full Changelog

4742b63 Bump VS Code extension to 0.31.0 (Roberto Aloi)
b3fa428 clean up: overloadedSpecDomainCheck is always on (Ilya Klyuchnikov)
8e57923 fix test config (Ilya Klyuchnikov)
a593f94 Do not report unused_record_field warnings if whole record is unused (Roberto Aloi)
a085eb0 Restrict range of unused_record_field diagnostic to name only (Roberto Aloi)
f8ed5c5 Add support for EEP 059 documentation (OTP 27) (Roberto Aloi)
1b2ce16 Better map update with union of keys (Victor Lanvin)
62c4832 a test case for maps (Ilya Klyuchnikov)
84fb28a maps:put/3 <-> #M{K => V} (Ilya Klyuchnikov)
a098b9d a test for maps:put/3 (Ilya Klyuchnikov)
86b4f7a Back out "BE: Switch to using a struct for eqwalizer include generated" (Alan Zimmerman)
0001512 Back out "Add include_tests to the EqwalizerIncludes struct" (Alan Zimmerman)
6e21099 Back out "Turn on eqwalizer in the IDE for tests" (Alan Zimmerman)
eb8f59b Turn on eqwalizer in the IDE for tests (Alan Zimmerman)
71b5864 Add include_tests to the EqwalizerIncludes struct (Alan Zimmerman)
11b5d28 BE: Switch to using a struct for eqwalizer include generated (Alan Zimmerman)
82b2224 make invalid record dynamic instead of removing it from stub (Ilya Klyuchnikov)
cd137e0 tricky test (Ilya Klyuchnikov)
7b46e09 Enable type diagnostics for generated files in the IDE (Alan Zimmerman)
a18260c Enable types on hover for generated files (Alan Zimmerman)
9b7cc8c BE: Introduce IncludeGenerated enum instead of bool for eqwalizer calls (Alan Zimmerman)
19ae4df Fix broken CI (Alan Zimmerman)
4409040 Add a GK to control the semantic highlighting of dynamic() (Alan Zimmerman)
db7145c Clarify map type approximation in errors (Victor Lanvin)
ff72ccb Add expression simplification for constant boolean values (Alan Zimmerman)
07de467 6/n semantic token types: Bring in 'type_dynamic' semantic token tag (Alan Zimmerman)
a914e07 5/n semantic token types: refresh semantic tokens when they change (Alan Zimmerman)
2435b45 4/n semantic token types: Use eqwalizer types for highlighting (Alan Zimmerman)
3dd2dcf 3/n semantic token types: Put eqwalizer types into server snapshot (Alan Zimmerman)
249c688 2/n semantic token types: initial POC highlighting dynamic type (Alan Zimmerman)
060a381 1/n semantic token types: Add eqwalizer type info function (Alan Zimmerman)
bb7a8ed BE: check annotations for reported diagnostic when checking a specific fix (Alan Zimmerman)
e8df6ce ElabApplyCustom and type collection (Ilya Klyuchnikov)
73ff3c9 a flag to report dynamic lambdas (Ilya Klyuchnikov)
d6e55d2 eqwalizer_tests: options - run with fault tolerance (Ilya Klyuchnikov)
d14ad96 Provide db.file_app_data(FileId) (Alan Zimmerman)
6941c1a Add IncludeFileIndex for resolving includes from paths (Alan Zimmerman)
410091a Bump mermaid and http-proxy-middleware dependencies (Roberto Aloi)
192b2c7 2/2 Remove redundant wid:make/1 call (Alan Zimmerman)
bcde430 1/2: Basic parameter rename WHO -> WID (Alan Zimmerman)
53dda0f BE: create ide_assists::helpers::extend_delete_range (Alan Zimmerman)
c331ee2 BE: fold: introduce ParentId::TopLevel (Alan Zimmerman)
e97e11a BE: Move fold_function_clause_body onto FunctionClauseBody::fold() (Alan Zimmerman)
f7cf6ea BE: add FunctionDefId to SpecDef (Alan Zimmerman)
b07bce7 BE: introduce fold ctx in_arg() (Alan Zimmerman)
97c0632 Update rebar3 integration docs (Roberto Aloi)
6f9f23c Check minimum rebar3 version (Roberto Aloi)
74063b7 BE: rename API call for hir::Var (Alan Zimmerman)
8e452fe BE: improve internal rename API (Alan Zimmerman)
539e928 Switch ELP from build_info to manifest plugin (Roberto Aloi)
95cff0c BE: Rename MacroStrategy::VisibleMacros to Expand (Alan Zimmerman)
29752a4 BE: Introduce tree_print for SpecBody (Alan Zimmerman)
c25ab62 improving current handling of overloaded specs (Ilya Klyuchnikov)
0b34125 Bump tree-sitter-erlang dependency to 0.9.0 (Alan Zimmerman)
7aecdaa Bump version to 0.9.0 for imminent release (Alan Zimmerman)
c743274 tree-sitter 0.23.0 (Matt Whitworth)
b1d8966 Introduce record tuple mismatch diagnostic (Alan Zimmerman)
59d0760 Complex maps snapshot tests (Victor Lanvin)
f0baf5e Rework map type (Victor Lanvin)
0ae9b6d Remove experimental flag from atoms_exhaustion linter (Roberto Aloi)
2598335 Lower atoms_exhaustion and unsafe_integer_conversion severities to WeakWarning (Roberto Aloi)
cb29661 Make Dialyzer command support the progress bar (Tom Davies)
d5e1758 Add docs for new warning W0026 (Balaji S)
191e147 Add fix to export private function (Balaji S)
5dbe587 Add diagnostic for private function calls from other modules (Balaji S)
bcd8a60 Do not produce STUB section in the Erlang Service linter (Roberto Aloi)
c06351a Filter stub forms from AST instead of relying on the STUB section (Roberto Aloi)
15df6b9 Filter away EEP059 doc attribute from AST and STUB (Roberto Aloi)
eb8a3e2 BE: get rid of new rust 1.81.0 warning (Alan Zimmerman)
b794a65 eqWAlizer: more tests (Ilya Klyuchnikov)
da9cb29 BE: Put DiagnosticsConfig into server Snapshot (Alan Zimmerman)
6549364 BE: Split ad hoc diagnostics out from DiagnosticsConfig (Alan Zimmerman)
7473e1d W0025: cope with expression in parens (Alan Zimmerman)
6659a7c 5/n: BE: Simplify FoldBody (Alan Zimmerman)
1ba0e9b 4/n: Capture parens for CallTarget::Remote (Alan Zimmerman)
4c1a51b 3/n: Introduce hir::Expr::Parens (Alan Zimmerman)
b127495 2/n: Introduce VisibleParens in Strategy (Alan Zimmerman)
0116abb 1/n: Turn fold Strategy into a struct containing an enum (Alan Zimmerman)

2024-10-08

08 Oct 14:21
Compare
Choose a tag to compare

Highlights

💪 Features

  • Fuzzy go-to-definition for types (works even when arity does not match)
  • Do not show inlay hints for "underscored" variables
  • Restrict range for "spec for undef function" diagnostic to name only
  • Exclude already exported functions in exports completions

🐛 Bug fixes

  • Ensure "go to type" links work for OTP types
  • Fix go to definition for ?MODULE macro

🖥️ elp lint CLI improvements

  • Reporting all diagnostics if none specified
  • Add option to check eqwalize-all after applying a fix
  • Automatically infer the --include-erlc-diagnostics flag when required (will soon be removed)
  • Fail fast in case of invalid config

🔍 Full Changelog

4b73b7b Diagnostics for oncall in header files - add detection (Balaji S)
5496cc5 Fix sidebar positions for L entries (Roberto Aloi)
db4f837 Add Error Index Entry for L1317 (Roberto Aloi)
e7379d9 Update cookie dependency to > 0.7.0 (Alan Zimmerman)
d1e59db Bump VS Code extension version to 0.30.0 (Alan Zimmerman)
a02a826 remove pico-args dependency, standardise on bpaf (Alan Zimmerman)
d87341a Extend check-format linter to custom functions (Roberto Aloi)
c4c37eb Bump tree-sitter-erlang dependency to 0.8.0 (Alan Zimmerman)
f5e1b0a Prepare version 0.8.0 (Alan Zimmerman)
95eb59e Re-sync with internal repository (#55) (Facebook Community Bot)
d85302e BE: Factor out some of the tmp file creation in tests (Alan Zimmerman)
1f08060 1/n: elp lint source from diagnostic, erlang service (Alan Zimmerman)
8356264 BE: run elp lint against a test fixture (Alan Zimmerman)
538645e more checks of overloaded specs (Ilya Klyuchnikov)
e3b3500 more checks for overloaded specs: tests (Ilya Klyuchnikov)
b0ff7d5 Ensure "go to type" links work for OTP types (Roberto Aloi)
5c3817e Clean up AI support code. (Alan Zimmerman)
4a34b39 Add regression test for unused-function-args (Daniel Gorin)
7e11983 Do not show inlay hints for "underscored" variables (Roberto Aloi)
f42dc27 Fuzzy go-to-def for types (Roberto Aloi)
64e1636 Restrict range for "spec for undef function" diagnostic to name only (Roberto Aloi)
b06d972 Exclude already exported functions in exports completions (Roberto Aloi)
00773ee Fix go to definition for ?MODULE macro (Alan Zimmerman)
8890976 lint: default to reporting all diagnostics if none specified (Alan Zimmerman)
235d504 BE: Introduce EnabledDiagnostic struct (Alan Zimmerman)
789ab10 elp lint: first check loading config, then load the project (Alan Zimmerman)
bed0ce8 BE: refactor 'elp lint' command to clean up config (Alan Zimmerman)
cc328a5 Add resolutions for vulnerable dependencies (Roberto Aloi)
608af78 Remove un-necessary specialization for unit tests running via Buck2 (Roberto Aloi)
3cb83ff Address identified vulnerabilities (Roberto Aloi)
b4b5602 reporting ignored overloaded specs (Ilya Klyuchnikov)
0d176af lint: add option to check eqwalize-all after applying a fix (Alan Zimmerman)
90812cc lint: check for errors after applying fix, bail if they are introduced (Alan Zimmerman)
2abe979 Remove unsound IllegalStateExceptions in Narrow (Victor Lanvin)
a5597d6 lint: capture diagnostics per file (Alan Zimmerman)
c76bf5e BE: lint: rename diags to initial_diags (Alan Zimmerman)
ef1dc2b lint: add flag to include eqwalizer diagnostics (Alan Zimmerman)
1d42216 lint: document exception handling for --apply-fix (Alan Zimmerman)
4e0f806 Raise severity of W0008 to Error (Roberto Aloi)
22859ce Add missing bounded dynamic cases in occurrence (Victor Lanvin)

2024-09-10

10 Sep 14:12
Compare
Choose a tag to compare

Highlights

  • Always treat the version of a document opened in the IDE as the source of truth in the Erlang Service sidecar, avoid reading files directly from disk
  • Fix a hang in the IPC protocol under load (3307219)
  • Add diagnostics to avoid 'and' and 'or' operators W0025 (d15f10f)
  • Restore OTP 25 support (#41) (belltoy)
  • Allow a spec to include a module name, if it matches current module (188a632)
  • Solve unused record field false positive (fixes #51)

Full Changelog

397f97c Add resolution for outdated path-to-regexp package (Alan Zimmerman)
d14edcd Bump VS Code extension version to 0.29 (Alan Zimmerman)
94a2b4f BE do not use disk fixture for eqwalizer test (Alan Zimmerman)
8492dce BE: Remove salsa file_revision (Alan Zimmerman)
c9253c0 BE: do not use disk fixture for erlang service (Alan Zimmerman)
4fda1b8 BE: rename needs_erlang_service to needs_fixture_on_disk (Alan Zimmerman)
ad4451f Fix Github CI by marking failing test to require eqwalizer (Alan Zimmerman)
bb511c0 BE: Tidy up erlang_service_server match clauses (Alan Zimmerman)
e1eb3cd Fix typo in installation instructions (Roberto Aloi)
1fd9e32 6/n Always use ELP file contents in erlang_service (Alan Zimmerman)
86f2c0d 5/n Make OTP source available in elp parse-all (Alan Zimmerman)
4873369 4/n Pass file contents to erlang_service with parse request (Alan Zimmerman)
536c67f 3/n Add erlang_service callback reply status (Alan Zimmerman)
e721b15 2/n: pass the file_id back to ELP (Alan Zimmerman)
d9a772d 1/n: Tramp FileId into erlang_service compile, for merge (Alan Zimmerman)
188a632 Allow a spec to include a module name, if it matches current module (Alan Zimmerman)
5e1dd10 Report bad maps -- snapshot tests (Victor Lanvin)
87beaca Report bad map types (Victor Lanvin)
c96bfcb Get rid of option to approximate maps (always true) (Victor Lanvin)
4d86d45 Map "WeakWarning" severity to "Disabled" in arc (Roberto Aloi)
86be033 Resolve built-in ?MODULE macro when expanding atoms (Roberto Aloi)
9ceb0df Add testcase to showcase unused record field false positive (Roberto Aloi)
79c2299 Fix callback module for some errors (Roberto Aloi)
b2ff100 BE:Fix some eqwalizer warnings in the erlang service (Alan Zimmerman)
03ecec5 Improve buck target generation for umbrella targets (Alan Zimmerman)
e1c2294 Bump vulnerable dependencies (Roberto Aloi)
1c978a0 Bump vulnerable dependencies (Roberto Aloi)
3307219 Disable busy limits for the erlang service stdio port (Alan Zimmerman)
23ec0c8 Address elp eqwalize-all hanging (Alan Zimmerman)
c8aacf7 Add --prefix option to lint sub-command (Roberto Aloi)
5f6ade1 BE: Remove legacy erlang_service_server API call (Alan Zimmerman)
cda7d32 delayed resolution of union constraints (Ilya Klyuchnikov)
60a5ee4 more tests for unions in generics (Ilya Klyuchnikov)
5c00958 Add missing eqwalizer OTP version check in tests (Alan Zimmerman)
eeebe7b skip eqwalizer tests if OTP does not support eqwalizer (Alan Zimmerman)
93ab97f Disable eqwalizer for OTP < 26 (#48) (Alan Zimmerman)
93525f7 Add a comment for elp lint filtering (Alan Zimmerman)
61700b1 Add W0025 assist: make 'and' become ',' in guards (Alan Zimmerman)
595155a Track Guards in parents for fold (Alan Zimmerman)
367795f Put constructor option into fold parents field (Alan Zimmerman)
623b635 BE: Bring in a type alias for Guards in HIR (Alan Zimmerman)
b1c2397 Add parens assist for W0025 (Alan Zimmerman)
d15f10f Add diagnostics to avoid 'and' and 'or' operators (Alan Zimmerman)
ac03a66 BE: improve stripping of annotations (Alan Zimmerman)
dd4bb9d Custom type-checking for lists:partition (Victor Lanvin)
d86d6d7 Preprocess lists:partition (Victor Lanvin)
16eef67 Implement AST transformer (Victor Lanvin)
ed89ea0 Snapshot tests for lists:partition (Victor Lanvin)
1ae1007 Strip RUST_BACKTTRACE and RUST_LIB_BACKTRACE before invoking buck2 (Roberto Aloi)
ca3a117 Mark eqwalize_all_fails_on_bad_parse test as flaky (Roberto Aloi)
a9889fe Add full logging of eqWAlizer errors' context (Victor Lanvin)
23cc244 Rephrase Helix support (Roberto Aloi)
1e5d66d Document adding ELP support to Helix (#46) (offsetcyan)
f1ed157 Add instructions on how to request an invite for the Erlanger Slack (Roberto Aloi)
334bfd1 Add debug info to elp (Roberto Aloi)
31cb05e Bump axios to 1.7.4 (Roberto Aloi)
6d28deb Canonicalize all paths from rebar3 build info (Alan Zimmerman)
71c445b BE: upgrade deps in Cargo.toml (Alan Zimmerman)
0f93fc3 BE: cargo update to latest dependencies (Alan Zimmerman)
195cf1b BE: upgrade rust-analyzer dep from 2022-09-05 to 2024-07-29 (Alan Zimmerman)
8b8eb2e Restore OTP 25 support (#41) (belltoy)
2c30d29 Fix transitive check (Victor Lanvin)
bf00b02 erlang_service: remove cursor (Michał Muskała)
baad626 Remove eetf::Term based build info (Alan Zimmerman)
3b400e3 Remove ProjectData::build_info_path (Alan Zimmerman)
ff7a7af remove build info from eqwalizer call (Alan Zimmerman)
14a47c5 Add AnyArityFunType to subtyping and vars elimination (Victor Lanvin)
57e3b9d Bug with generic and function of any arity -- snapshot (Victor Lanvin)

2024-08-05

05 Aug 09:09
Compare
Choose a tag to compare

Highlights

  • Process OTP 27 Doc attributes
  • Newer version of EqWAlizer
  • Bug fixes and performance improvements (up to 20% for elp parse-all and elp eqwalize-all)

Full Changelog

5d3976d Bump OSS VS Code extension to 0.28.0 (Roberto Aloi)
e9bade8 18/n Better callback handling in erlang_service_server (Alan Zimmerman)
f36bb54 17/n make erlang_service Response an enum (Alan Zimmerman)
07b62a7 16/n Do not send extra Id in callback response to erlang_service (Alan Zimmerman)
365668d 15/n: standardize on request_reply_handle for ELP erlang_service (Alan Zimmerman)
79c36d6 14/n Improve erlang_service ELP callback architecture (Alan Zimmerman)
5dc186b 13/n use ELP include resolution for erlang_service parsing escripts too (Alan Zimmerman)
8e23199 12/n Remove erlang_service synthetic include file tracking (Alan Zimmerman)
79fa273 11/n cache include lookups in salsa (Alan Zimmerman)
85b1b4d 10/n Process file:path_open for docs (Alan Zimmerman)
451c54f 9/n Process file:path_open for include_lib (Alan Zimmerman)
b8eac95 7&8/n use include file resolution in erlang service (Alan Zimmerman)
96d066b 6/n Move IncludeCtx into base_db crate (Alan Zimmerman)
fac535a 5/n: split IncludeCtx (Alan Zimmerman)
c58e2a8 4/n erlang_service: deal with open response (Alan Zimmerman)
2cc7075 3/n Update request_parse architecture in ELP (Alan Zimmerman)
65b0fdc 2/n erlang_service: tramp request id through (Alan Zimmerman)
8c9f07e 1/n: erlang_service include resolution via ELP (Alan Zimmerman)
48dd4a3 Rewrite ElabGuard (Victor Lanvin)
64f30be Kill redundant guard detection (Victor Lanvin)
aba65bb Bug in disjunction in guard (Victor Lanvin)
e1d9ee3 Remove expr field from structured eqwalizer errors (Michał Muskała)
054596e OTP27 doc attribute processing (Alan Zimmerman)
61cd98f Clean up stray logging in erlang_service (Alan Zimmerman)
7d002a8 add overloaded specs to eqwalizer stats (Ilya Klyuchnikov)
1cdaa26 prepare for more eqwalizer stats (Ilya Klyuchnikov)
1e991c9 IPC: do not send unneeded forms to eqWAlizer (Ilya Klyuchnikov)
ae67e55 ELP: InternalForm is not used (Ilya Klyuchnikov)
3358c3d Add ref:main in GH workflow for pulling eqWAlizer (Victor Lanvin)
4bdc56f Swap props to negate tests (Victor Lanvin)
fce8776 Bug in occurrence typing -- snapshot (Victor Lanvin)
f7ec819 Upgrade to time-0.3.36 (Alan Zimmerman)
2b883c4 Merge eqWAlizer tests (Victor Lanvin)
aaafd01 hover for OTP27 (Alan Zimmerman)
b531363 Do not report an error for doc attributes file invalid in erlang module (Alan Zimmerman)
5885bbd intermediate stubs are not sent (Ilya Klyuchnikov)
23417bc Remove testing functions (Victor Lanvin)
180d30d erlang service: remove spurious trap_exit call (Michał Muskała)
5431929 Remove strict mode (Victor Lanvin)
0fcff8e only gradual mode (Ilya Klyuchnikov)
b207c70 Simplify LSP main loop task processing so slow_event telemetry is accurate (Alan Zimmerman)
ebbfc67 Improve typing of maps:map when the input is a shape (Rui Gonçalves)
db757df Apply elp:ignore to erlang_service diagnostics too (Alan Zimmerman)
33dca0e Test using bxl for project config (Alan Zimmerman)
f807c30 BE: Swap two tests around (Alan Zimmerman)
2cda1c3 Do not report W0012 for header files (Alan Zimmerman)
a168778 Improve expected_type when returning an atom (Alan Zimmerman)
3791250 Dedup keys when parsing shape maps in ELP (Rui Gonçalves)
dac7b06 Use raw port for stdin/out in erlang service (Michał Muskała)
5666ee2 Simplify Eralng service (Michał Muskała)
4d95be1 elp lint: automatically request erlang serivice diagnostics if needed (Alan Zimmerman)
aae051d BE: clear warning from new rust version (Alan Zimmerman)

2024-07-16

16 Jul 08:20
Compare
Choose a tag to compare

Highlights

OTP 27 support

The internal copy of the erlc frontend now uses maybe, so it means we must remove OTP 25 build versions

eqWAlizer will now report uncovered function clauses

eqWAlizer will now report uncovered clauses, which means eqWAlizer is detecting that the corresponding pattern and guards cannot match the input type, and will not fully type-check it. In most cases, it means a spec or a type alias has to be updated. In some rarer cases, a clause may simply be dead code and can be deleted.

Improved diagnostics reported ranges

Various diagnostics that reported on a function call now report the range of the module:function part not the full MFA.

undefined function (W0017) diagnostic now reports for the erlang module too

Missing compile warn_missing_spec_all (W0012) diagnostic rework

We have a diagnostic to report that there is not a -compile(warn_missing_spec_all). directive for a file.
It is disabled by default. To enable it, add a .elp_lint.toml file to your project root, with contents

enabled_lints =['W0012']

This is now automatically read and used by ELP in language server mode, if it exists, and reloaded if it changes.

It can also have a disabled_lints section.

elp lint --one-shot CLI argument

If a given diagnostic code applies to a file, apply a fix for all occurrences if asked.
It normally only does one at a time, so the command needs to be called multiple times.
This will be made more logical in future, removing the need for this flag.

Raw Change Log

2aed828 Turn on vscode publishing for OTP 26.2 (Alan Zimmerman)
cd5e3b6 tests: OTP-27 compatible (Ilya Klyuchnikov)
ffad3c7 Bump vscode extension version for imminent release (Alan Zimmerman)
6ecc191 CI: remove OTP 25 from the matrix (#38) (Alan Zimmerman)
8462fa6 bump version to 0.7.0 (Alan Zimmerman)
6de370c Protect against panics from DidChangeTextDocument (Alan Zimmerman)
e055181 BE: fix currently unused enum variant warning (Alan Zimmerman)
eb10270 BE: Improve reported range in slow functions diagnostic (Alan Zimmerman)
e0e969e Add UseRange to DiagnosticTemplate (Alan Zimmerman)
00418bc BE: Improve reported range for cross_node_eval (Alan Zimmerman)
f8398ba Fix CallTarget.range for auto-erlang remote call (Alan Zimmerman)
57da3b2 BE: Improve reported range for undefined_function diagnostic (Alan Zimmerman)
a6e35f4 BE: supply range without args to find_cal_in_function callback (Alan Zimmerman)
05ae919 Fix buck project model to prevent false positive undefined function (Alan Zimmerman)
2e532f3 BE: Improve Target.private_header documentation (Alan Zimmerman)
8a316b3 report undefined function for erlang functions too (Alan Zimmerman)
4b9183f rename elp lint '--enable-erlang-service-diagnostics' to '--enable-erlc-diagnostics' (Alan Zimmerman)
c03acbd Add --include-otp-diagnostics option to "elp lint" (Alan Zimmerman)
1495d56 3/n: ReplaceInSpec assist: fix match (Alan Zimmerman)
a134c3e 2/n: ReplaceInSpec assist: detect match (Alan Zimmerman)
6622118 Ad-hoc handling of is_float/is_integer guards (Victor Lanvin)
fae41b5 Snapshot uncovered clause FP with numbers (Victor Lanvin)
ccaf672 1/n: ReplaceInSpec assist: initial infra and serialization (Alan Zimmerman)
ce6aac6 Fix typo in function name (Roberto Aloi)
f4bdf05 Add ability to pass custom prefix to glean sub-command (Roberto Aloi)
83c3c7c Update documentation links to reflect new format (Roberto Aloi)
773b00a Better erlang_service protocol (Michał Muskała)
ce0b616 Remove obsolete version of the scanner (Roberto Aloi)
109fe14 BE: Improve MFA Serde serialization (Alan Zimmerman)
9cffefc ensure elp:fixme takes effect on whole-file diagnostics (Alan Zimmerman)
914adfc add ignore and fixme assists to W0012 compile warn missing spec all (Alan Zimmerman)
fedc591 BE: use Expect for expected fix test results (Alan Zimmerman)
81c617b Fix offset calculation for sigils (Roberto Aloi)
ceef61e BE: Set lints_from_config while configuring lints (Alan Zimmerman)
efbd231 BE: rename DiagnosticConditions::explicit_enable to default_disabled (Alan Zimmerman)
b45363b Include event start time in telemetry (Alan Zimmerman)
db2cdef BE: remove disabling DiagnosticCode::MissingCompileWarnMissingSpec in tests (Alan Zimmerman)
ac9103b BE: Improve DiagnosticConfig initialization (Alan Zimmerman)
02bb478 reload LintConfig on config change (Alan Zimmerman)
e8ff008 server: always read .elp_lint.toml (Alan Zimmerman)
b13c59b elp lint: add test for lints explicitly enabled in config (Alan Zimmerman)
b952c15 switch fully to DiagnosticDescriptor for compile_warn_missing_spec diagnostic (Alan Zimmerman)
e0d2941 require compile_warn_missing_spec_all (Alan Zimmerman)
0d8f7cf Explictly filter explicitly enabled diagnostics (Alan Zimmerman)
3c3a5f5 BE: clarify include_otp flag when requesting diagnostics (Alan Zimmerman)
1195042 Add DiagnosticConditions.explicit_enable (Alan Zimmerman)
d041949 Snapshot: keep entire LintConfig, not just LintsFromConfig (Alan Zimmerman)
55e7d04 Move calculation of enabled diagnostics from config into ide crate (Alan Zimmerman)
881b659 Fix up typos (Ayoub Mansar)
80cadd3 Fix dependabot alert for vscode client (Alan Zimmerman)
3b84b94 add --one-shot to elp lint to apply all fixes at once (Alan Zimmerman)
c91b944 Shallow Dialyzer support on CLI (Tom Davies)
0fe3033 Handle sigil prefix/suffix in the scanner (Roberto Aloi)
50ba583 Update HIR for more-than-triple quote strings (Alan Zimmerman)
f8b673e Extend external scanner for triple quoted sigil strings (Alan Zimmerman)
1d7994a Add external scanner for triple quoted strings (Alan Zimmerman)
ba6e272 rename String::TripleQuoted to String::Verbatim (Alan Zimmerman)
6392db3 Update HIR for doc attribute (Alan Zimmerman)
f2be41c Update HIR for moduledoc attribute (Alan Zimmerman)
5968f13 6/n Update HIR for string sigils: term (Alan Zimmerman)
f3b2402 5/n update HIR for string sigils: type_expr (Alan Zimmerman)
60f7eb5 4/n Update HIR for string sigils: pat (Alan Zimmerman)
678752a 3/n Update HIR for string sigils: generalize lower_str_or_sigil (Alan Zimmerman)
e5fbb1a 2/n Update HIR for string sigils: expr (Alan Zimmerman)
1c24e7a 1/n Update HIR for string sigils (Alan Zimmerman)
e199f75 update grammar for string sigils (Alan Zimmerman)
eece0cc Update HIR to explicitly represent triple quoted strings (Alan Zimmerman)
ec0af1c Update grammar for triple quoted strings (Alan Zimmerman)
c9f1e31 Fix matching in scanner for triple quoted string continuation (Roberto Aloi)
e76a54a Update third-party grammar (Roberto Aloi)
fb463fe Fix use of maybe in macro argument (Roberto Aloi)
287c390 compiler: implementation of EEP-59 (Roberto Aloi)
5465e15 Implement warning for adjacent string literals without intervening white space (Roberto Aloi)
3625595 Preprocessor: Fail compilation for unknown functions (Roberto Aloi)
2e4fe37 Shorten code by list comprehension (Roberto Aloi)
aa86a80 Emit warning for triple quote chars (Roberto Aloi)
8c14904 Rename erl_scan_otp27 into elp_scan (Roberto Aloi)
2d67e73 Update scanner to always count of carriage return as zero (Roberto Aloi)
9541cb9 Export location type (Roberto Aloi)
f156ab6 Always consider maybe and else as keywords (Roberto Aloi)
599cf89 Modify erl_scan to use bytes (Roberto Aloi)
3e45eec Remove unnecessary has_fun (Roberto Aloi)
c2577d4 Remove ssa checks (Roberto Aloi)
48f021e Remove unused code (Roberto Aloi)
6b9ebca Format erl_scan (Roberto Aloi)
5495e9e Import latest erl_scan from OTP 27, strip away docs (Roberto Aloi)
d82f86f Error index entry for L1318 (Roberto Aloi)
8402121 New error codes for erl_lint/elp_lint (Roberto Aloi)
726ca97 Restore --force-warn-missing-spec-all flag (Roberto Aloi)
95b4ccb Upgrade elp_lint to latest available version (Roberto Aloi)
90398cb Implementation of EEP-59 Documentation Attributes (Roberto Aloi)
9b72b05 Remove trailing dot from erl_parse error messages (Roberto Aloi)
e2bac67 Fix bugs and distinguish between Sigil Type and Sigil Prefix (Roberto Aloi)
04d346e Remove ~r and fancy delimiters (Roberto Aloi)
aa99f88 Implement string sigils according to EEP 66 (Roberto Aloi)
37410c3 Remove unused argument (Roberto Aloi)
2b6dc11 Upgrade braces and ws dependencies (Roberto Aloi)
a303f92 CI: fix macOS x86_64 builds for eqWAlizer (#34) (Ali Sabil)
f7a3a14 Provide test example of using lints from config (Alan Zimmerman)
c2206f4 Add link to Slack channel in issue template (Roberto Aloi)
26960de Add telemetry for too-slow events (Alan Zimmerman)
a043fdc Add ELP installation instructions for Vim (Roberto Aloi)
9326281 Suggest elp shell when running eqwalize-all (Victor Lanvin)
bab39dc Make erlang service scoped per project and auto-started (Michał Muskała)

2024-06-07

07 Jun 13:48
Compare
Choose a tag to compare

Highlights

Fuzzy go-to-definition for functions

One of the challenges of a language server is to provide good ergonomics while working with partially correct code. Until now, go-to-definition would only work if the arity of the invoked function was exactly the same as the number of arguments passed in the invocation. We are now relaxing that constraint so that, if no definitions are found with an exact match (function name + arity) we fall back to a function with the same name but different arity. Handy if you are in the process of authoring code.

Support for Linux ARM64

Thanks to @asabil we now have a CI for Linux ARM64. Try the produced artifacts and let us know in case of issues!

No more "Background parsing" progress bar

The "Background Parsing" (separate from the "Loading Applications" one) spinner was displayed while the language server was populating its own internal cache. Many users interpreted this as part of the initial indexing process, so they were waiting for it to complete before using language features. This was not necessary - the background parsing is just an internal optimization -, so we are now hiding it from the user.

Bug fixes and improvements

  • New version of eqwalizer!
  • Fix crash in the elp shell that could happen during large rebases

Full ChangeLog

dd91c9a Bump extension (Roberto Aloi)
25154e0 Gracefully fail sending progress end (Michał Muskała)
ed3077e CI: add linux aarch64 build (#33) (Ali Sabil)
5754c77 Disable smart elaboration of negation in guards (Victor Lanvin)
42deec4 Repro -- invalid occurrence typing with negation of atoms (Victor Lanvin)
106b771 Sync file change logic from server to shell (Victor Lanvin)
687608f BE: Normalise types during lowering (Alan Zimmerman)
0968593 Only set eqWAlizer config if it has been changed (Victor Lanvin)
8fe7311 Avoid code duplication (Roberto Aloi)
6979267 Limit fuzzy search to go-to-definition (Roberto Aloi)
ff59c24 Fuzzy (any arity) go-to-definition for functions (Roberto Aloi)
3160b7a Add --clause-coverage option (Victor Lanvin)
e980308 EqwalizerConfig as Salsa input (Victor Lanvin)
f779dce Use correct name for [build_info] section (Roberto Aloi)
c37ed3b Remove "Background parsing" spinner (Alan Zimmerman)
8c47bb1 Reload project on change for ELP shell (Victor Lanvin)

2024-05-24

24 May 15:52
Compare
Choose a tag to compare

Highlights

✅ Completion and Hover information for built-in and imported functions.

We now correctly provide completions and signature help for BIFs and imported functions.

Screenshot 2024-05-28 at 18 29 56 Screenshot 2024-05-30 at 09 44 45

Fixes #28 , #29 .

📙 Documentation for NeoVim Support

Learn how to configure ELP in NeoVim here.

Thanks @mkuratczyk for the contribution!

✈️ Better navigation for Common Test suites

Screenshot 2024-05-30 at 09 55 03

It is now possible to navigate from a test-case name in the all/0 and groups/0 functions to its definition. It is also possible to quickly find the respective init_per_testcase/2, end_per_testcase/2 and the alike for a given test using the find references mechanism. Finally, renaming a test will also take care of updating all occurrences of the same test in a suite.

Full ChangeLog

f69546a Bump vscode extension version for imminent release (Alan Zimmerman)
0cf2364 completions for BIFs (Alan Zimmerman)
f413567 include module in DefMap::get_functions_in_scope (Alan Zimmerman)
025af9f lower imported functions and BIFs as remote calls (Alan Zimmerman)
7c2cae5 E2E test for as-you-type diagnostics (Roberto Aloi)
0ef4c22 Neovim support (#31) (Michal Kuratczyk)
f061fb5 Update meet for dynamic case (Victor Lanvin)
c270dac Implement go-to-def for CT testcases (Roberto Aloi)
4e17470 Add .globalcache to .gitignore (Alan Zimmerman)
e776a1c E2E test for unused macro (Roberto Aloi)
0772d13 E2E tests for extracting a function (Roberto Aloi)
4de26b7 E2E test for add edoc comment (Roberto Aloi)
efa8fca E2E test for types on hover (Roberto Aloi)
54d9b07 E2E test for compiler diagnostics (Roberto Aloi)
98b5ad1 use buck bxl query if asked (Alan Zimmerman)
7a3fd15 Use generic buck target cell names in tests (Alan Zimmerman)
e7a2948 Improve error reporting for 'elp project-info' (Alan Zimmerman)
5d6b729 Fix test failure (Alan Zimmerman)
a490e05 add buck bxl test (Alan Zimmerman)

2024-05-17

17 May 12:18
Compare
Choose a tag to compare

Highlights

⚙️ Easier configuration for custom projects

So far, it was only possible to use ELP with buck2 or rebar3 projects (via a plugin). An option to provide a custom build_info.json file was already available, but cumbersome for the user since it required creating and maintaining a large JSON file which listed all projects applications and dependencies.

You can now specify the structure of your project via a dedicated [build_info] section in the ELP config file. For example:

[build_info]
apps = "apps/*"
deps = "deps/*"

We hope this will make it easier to try ELP!

🎯 Precise ranges for undefined functions

We used to report a diagnostic for the whole -export attribute in case of an undefined function. We now restrict the range to the actual culprit.

Before:

Screenshot 2024-05-17 at 14 07 53

After:

Screenshot 2024-05-17 at 14 09 05

🐞 Bug Fixes

  • Fix a bug which caused the language server to report spurious diagnostics after switching branches
  • Do not try to compute code lenses for .config and .app.src files
  • Do not report syntax errors when the maybe (?=) operator is used
  • Avoid panic while calculating project-wide eqwalizer diagnostics due to 0 chunk size
  • Report correct ranges for diagnostics in presence of CRLF line endings
  • Fix handling of -file attributes
  • Fix detection of generated pragma in module preamble (fixes #24)

Full Changelog

ca7d3ab Bump version to 0.24.0 (Roberto Aloi)
e755c76 Add a test project for elp bxl query (Alan Zimmerman)
2bb78a7 Fix build by commenting out meta_only line (Alan Zimmerman)
50a2f7c Add config option to select buck project model query (Alan Zimmerman)
77d5d98 Include raw buck query result in elp project-info (Alan Zimmerman)
42b1f68 Temporarily ignore some files for CI 'elp parse-elp' (Alan Zimmerman)
e984d23 Handle -file attribute in .erl files (Roberto Aloi)
2957db5 Introduce build_info section in ELP config file (Roberto Aloi)
cbbec20 Generate dynamically build_info file (Roberto Aloi)
1f39bbc Add glob crate (Roberto Aloi)
64bd24a Bump tree-sitter-erlang version to 0.6.0 (for OSS) (Alan Zimmerman)
8efc68c Disarm unused trait method warning (Alan Zimmerman)
cc60e18 regen eqwalizer snapshot test (Ilya Klyuchnikov)
e2f6fbd Bump version to 0.6.0 (Alan Zimmerman)
113f969 Fix detection of generated pragma when 2001 is not a char boundary (Roberto Aloi)
0b99dae Add testcase for sigils (Roberto Aloi)
d197467 Add testcase for docstrings (Roberto Aloi)
18c7026 Bump tree-sitter crate to 0.22.5 (Alan Zimmerman)
fcdd3c1 Bump tree-sitter-cli to 0.22.5 (Alan Zimmerman)
e516a37 more precise handling of maps:remove (Ilya Klyuchnikov)
20130c8 BE: fix flaky test (Alan Zimmerman)
17cc6c7 Uncovered clause detection (Victor Lanvin)
d5627c5 Do not warn about usages of binary_to_term (Roberto Aloi)
99ebfe9 combine related errors for eqwalizer cli reporting too (Alan Zimmerman)
27769e0 Import epp_dodger from OTP 27 in Erlang Service (Roberto Aloi)
a07c9a4 Fix branch change diagnostic problem (Alan Zimmerman)
bb9612f Restrict L1227 (undefined function) diagnostics range (Roberto Aloi)
4f3b9eb Add test case showing the range for L1227 (undefined function) diagnostics (Roberto Aloi)
ee4b03d Do not panic if provided list of files is empty (Roberto Aloi)
fbd43eb Only generate lenses for elp-supported files (Alan Zimmerman)
bbd75be Add support for on-call links (Roberto Aloi)
ecb40d7 Add meta-only doc links (Roberto Aloi)
ee84c5b BE: make cross_node_eval config completely static (Alan Zimmerman)
076deb2 BE: make atoms_exhaustion config completely static (Alan Zimmerman)
bf8e8bf BE: make application_env BAD_MATCH completely static (Alan Zimmerman)

2024-04-29

29 Apr 08:32
Compare
Choose a tag to compare

The main visible improvements are

  • Do not crash when changing branches on project
  • Put full set of configuration options into the VS Code client, using Erlang Language Platform as the extension name
  • Properly deal with files having CRLF line endings

Detail

320ff4b CI: Update ci.yml for latest changes in github (#25) (Alan Zimmerman)
a0751fb Add infrastructure to cross node eval for custom error message per match (Alan Zimmerman)
8d5a1f6 Bump VS Code extension version to 0.23 for imminent release (Alan Zimmerman)
41b95be Introduce meta-only doc links (Roberto Aloi)
a387109 Prepare doc_links to handle multiple sources (Roberto Aloi)
18e0b2a Update erlang_service to process CRLF the same as ELP (Alan Zimmerman)
a937386 Capture LineEnding in LoadResult (Alan Zimmerman)
3125746 BE: use the same processing path converting from vfs to salsa (Alan Zimmerman)
bfff8ce Transparently calculate ProjectId from FileId in Type API (Roberto Aloi)
3c61178 dynamic() -> eqwalizer:dynamic() in tests (Victor Lanvin)
3ce7f9b Avoid project-wide diagnostics disappear upon closing (Roberto Aloi)
50f5a7f sort out panic for get_file_contents on a created file (Alan Zimmerman)
e4bac91 Bump version to 0.22 for imminent release (Alan Zimmerman)
331072a Update VS Code configuration options (Alan Zimmerman)
0926a13 Simplify filtering mechanism for EDoc and CT Diagnostics (Roberto Aloi)
11c54f3 Move include_otp to DiagnosticsConfig (Roberto Aloi)
45759fd Make OTP diagnostics configurable (Roberto Aloi)
28a3fcd Do not report OTP diagnostics by default (Roberto Aloi)
c97d4ab Fix subtyping dict < shape being too lenient (Victor Lanvin)
06e2065 Issue refining unions of maps (Victor Lanvin)
3e23e8c Fix W0017 documentation (Alan Zimmerman)