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
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
27
27
28
28
-**Rewritten variable resolver.** Variable type resolution now uses a single top-to-bottom pass through each function body on both the diagnostic and completion paths, with zero recursion and no depth limit.
29
29
-**Broader type narrowing.**`instanceof`, type-guard functions (`is_array`, `is_string`, etc.), `in_array()` strict mode, `assert()`, `@phpstan-assert-if-true`/`-if-false`, and compound `&&`/`||` conditions now narrow variable types in if/else branches, guard clauses, while-loop bodies, ternary expressions, and `match(true)` arms. Negated guards and compound conditions like `if (!$x instanceof A && !$x instanceof B) { return; }` are handled correctly.
30
+
-**Chain resolution cache.** The per-request chain resolution cache that eliminates redundant re-resolution of shared chain prefixes is now active for all LSP handlers (completion, hover, go-to-definition, signature help, etc.), not just diagnostics.
30
31
-**Closure and arrow function parameter inference.** Untyped closure and arrow function parameters are inferred from the enclosing call's callable signature, including through method chains that return `static`. Generic type substitution flows through to inferred parameters (e.g. a `callable(T)` parameter on a `Repository<Product>` resolves `T` to `Product`).
31
32
-**Editing responsiveness.** Classes evicted from the resolved-class cache after a file edit are now eagerly re-populated in dependency order, eliminating lazy resolution delays for diagnostics and completions.
32
33
-**Virtual member resolution.** Virtual member providers (PHPDoc mixins, Laravel model, Eloquent Builder) now resolve completely on every class, eliminating cases where mixins or Eloquent accessors were missing after edits.
| P26 |[Chain resolution cache only active during diagnostics](todo/performance.md#p26-chain-resolution-cache-only-active-during-diagnostics)| Medium | Low |
| P20 |[Forward walker: bounded iteration and depth-cap cleanup](todo/performance.md#p20-forward-walker-bounded-iteration-and-depth-cap-cleanup)| High | Medium |
31
30
| ER5 |[Mago-style separated metadata](todo/eager-resolution.md#er5--mago-style-separated-metadata)| High | High |
0 commit comments