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
{{ message }}
Repository navigation
Commit 32fc5cb
Browse filesBrowse the repository at this point in the historyBrowse files
Seed the arrow function type cache from the handler's single body walk
processArrowFunctionNode() now returns ProcessArrowFunctionResult: the walked
arrow scope plus the throw points, impure points (merged in getClosureType()
order) and invalidate expressions its type needs, gathered during the single
body walk. ArrowFunctionHandler seeds the per-node type cache with both
flavours built from the walk - unlike a closure, an arrow function's native
return type genuinely differs from its phpdoc one, so the native slot gets its
own build reading the walked body's native types. Arrow functions now
participate in the cache read: the flavour- and parameter-aware key answers
each ask from its own seeded slot.
Both seeding paths (this one and the closure one) are gated on the storage
having no parked fibers: a parked fiber may still append to the walk's
gathered data - the invalidate expressions of a write like $this->prop[] = ...
arrive only when the fiber flushes - so a seeded entry could be incomplete.
When anything is parked, the lazy ask keeps re-walking with the fibers
flushed, as before.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DaBZjgksga4c5s6Q9FniY7
* @param ThrowPoint[] $closureTypeThrowPoints public throw points for building the arrow function type
12
+
* @param ImpurePoint[] $closureTypeImpurePoints already merged in getClosureType() order (property-assign impure points first, then expression result impure points)
0 commit comments