You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Code completion deduplication: multi-clause functions (e.g. `Enum.map_every` with 5 clauses) now appear once in completion results instead of once per clause head. Shared `PreferFunctionHead` logic selects bare function heads over implementation clauses.
8
+
* Parameter info deduplication: parameter hints grouped by `(name, arity)` -- separate arities still show distinct hints, but multiple clauses of the same arity no longer produce duplicate entries.
9
+
* Completion prefers source-defined modulars over BEAM stubs when both are available, eliminating duplicate completion entries.
10
+
* Transitive alias resolution: when stub-index lookup finds nothing for a module name that is itself a `QualifiableAlias`, resolution now follows alias chains transitively. Possibly addresses [#1806](https://github.com/KronicDeth/intellij-elixir/issues/1806).
11
+
*`DefinitionsScopedSearch` cancellation: added `ProgressManager.checkCanceled()` at loop boundaries and honour `Processor.process()` return value for early-exit, preventing hangs during large-project searches.
***Breaking change**: removed `nameArityInAnyModule` global fallback from resolver. Previously, when `resolveInScope` found no results, the resolver fell back to a global stub-index search returning every function with a matching name from every module (all marked `validResult=false`). This polluted parameter hints with unrelated modules (e.g. hovering `Enum.map()` showed hints from `Stream.Reducers`, `Ecto`, `Phoenix`), caused Go-to-Definition to navigate to wrong-module definitions, and filled the resolution cache with irrelevant results. Calls that were previously "resolved" to functions in unrelated modules will now correctly appear as unresolved references.
16
+
* Infinite loop in `UnaliasedName.up` when resolving `QualifiedMultipleAliases` -- function overload ordering caused mutual recursion.
17
+
* Infinite recursion and NPE prevention in PSI resolve/tree-walk paths via `RecursionManager.doPreventingRecursion()` and null-safe `VISITED_ELEMENT_SET` access in `ResolveState`.
18
+
*`@spec` line marker grouping checked arity equality before name equality -- specs for different functions with the same arity were incorrectly grouped together.
19
+
* Gutter icons anchored to leaf `PsiElement`s per the `LineMarkerProvider` contract. Non-leaf elements caused markers to blink or appear in wrong positions after edits.
20
+
* Removed redundant `computeReadAction`/`runReadAction` wrappers from `CallImpl` getters (`functionName`, `moduleName`, `resolvedPrimaryArity`) and `PsiNamedElementImpl` name getters. These trivial PSI reads were called from paths already holding a read lock; under 2025.3+ writer-preference locking, re-acquiring blocks the EDT when a write action is pending. Partially fixes [#3790](https://github.com/KronicDeth/intellij-elixir/issues/3790).
21
+
*`Elixir.` prefix stripping for module name resolution -- stub index stores names without the prefix, so `Elixir.Enum` lookups now match correctly.
Copy file name to clipboardExpand all lines: resources/META-INF/changelog.html
+24Lines changed: 24 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,30 @@
1
1
<html>
2
2
<body>
3
3
4
+
<h1>v23.2.0</h1>
5
+
<ul>
6
+
<li>
7
+
<p>Enhancements</p>
8
+
<ul>
9
+
<li>Code completion no longer shows duplicate entries for functions with multiple clauses or guards (e.g. <code>Enum.map_every</code> previously appeared 5 times).</li>
10
+
<li>Parameter hints deduplicated -- hovering a function call shows one set of hints per arity, not one per clause.</li>
11
+
<li>Module alias resolution now follows alias chains transitively, improving Go-to-Declaration and completion for aliased modules.</li>
12
+
<li>Large-project searches (Find Usages, Go-to-Definition) can now be cancelled mid-search and exit early when results are found, preventing UI hangs.</li>
13
+
</ul>
14
+
</li>
15
+
<li>
16
+
<p>Bug Fixes</p>
17
+
<ul>
18
+
<li><b>Breaking change</b>: parameter hints and Go-to-Definition no longer show results from unrelated modules. Previously, unresolvable calls fell back to a global search returning every function with the same name across the entire project. Calls that cannot be resolved now correctly show no results instead of misleading ones.</li>
19
+
<li>Fixed infinite loop when resolving multi-aliases (e.g. <code>alias Foo.{Bar, Baz}</code>).</li>
20
+
<li>Fixed infinite recursion and potential crashes in reference resolution.</li>
21
+
<li>Fixed <code>@spec</code> gutter icons grouping specs for different functions together when they shared the same arity.</li>
22
+
<li>Fixed gutter icons (line markers) blinking or appearing in wrong positions after editing code.</li>
23
+
<li>Reduced UI freezes caused by redundant read-lock acquisition in frequently called PSI accessors under IntelliJ 2025.3+ writer-preference locking.</li>
0 commit comments