Skip to content

Run engine-feeding node-callback gatherers synchronously at the emission position - #6142

Merged
ondrejmirtes merged 1 commit into
2.2.xfrom
gathering-node-callback
Jul 28, 2026
Merged

Run engine-feeding node-callback gatherers synchronously at the emission position#6142
ondrejmirtes merged 1 commit into
2.2.xfrom
gathering-node-callback

Conversation

@ondrejmirtes

Copy link
Copy Markdown
Member

Extracted from the resolve-type-rewrite-2 branch (independent PR on 2.2.x).

Body walks pair an engine-feeding gatherer (impure points, execution ends, return statements, array_walk value types, anonymous-class constructor results…) with the rule-facing node callback in a single closure, and read the gatherer's by-reference arrays as soon as the walk returns. FiberNodeScopeResolver defers node callbacks to fibers — a rule parking on an unsettled expression can delay the gathering past the read. The new GatheringNodeCallback pairs the two explicitly: the fiber engine runs the gatherer synchronously at the emission position (on the plain scope — mainline's on-demand getType needs no fiber) and defers only the rule-facing remainder.

Eight gatherer sites wrapped (function/method/hook bodies, closure statements, the expression-statement assign detector, anonymous-class constructor gathering, array_walk value gathering).

Validation: full test suite green (17778 tests), self-analysis clean, code style clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_019wqGgaD7iqL44t1KgpJS7b

…ion position

Body walks pair an engine-feeding gatherer (impure points, execution
ends, return statements, array_walk value types, anonymous-class
constructor results, ...) with the rule-facing node callback in one
closure, and read the gatherer's by-reference arrays as soon as the
walk returns. FiberNodeScopeResolver defers node callbacks to fibers -
a rule parking on an unsettled expression would delay the gathering
past the read. Pair the two in a GatheringNodeCallback: the fiber
engine runs the gatherer synchronously at the emission position and
defers only the rule-facing remainder.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wqGgaD7iqL44t1KgpJS7b
@ondrejmirtes
ondrejmirtes merged commit 59b2c70 into 2.2.x Jul 28, 2026
737 of 744 checks passed
@ondrejmirtes
ondrejmirtes deleted the gathering-node-callback branch July 28, 2026 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant