fix(javascript): separate stored receiver and initializer traversal

This commit is contained in:
morluto committed 2026-10-24 08:22:14 +08:00
1 parent 0ba81bd9e4
commit 2ff85c0e4c
2 files changed
+11 -6

No files matched your search

@@ -1085,9 +1085,9 @@ export function* collectSemanticMemberMutationsSteps(
current.capturedSelections,
)
: undefined;
// A defined owner result already includes every eligible initializer;
// replaying them separately duplicates selection/capture histories.
retainsInitializers = receiver === undefined;
// Stored receiver projections preserve their raw capture authority.
// Initializer origins retain the normalized mutation traversal below.
retainsInitializers = receiver?.retainsOrigin !== false;
if (effect === "escape")
binding.escapedPaths.push({
path,
@@ -1115,7 +1115,7 @@ export function* collectSemanticMemberMutationsSteps(
// the final written slot. The source owner preserves replacements
// and captures; a local container does not isolate its children.
if (receiver !== undefined) {
for (const source of receiver.sources)
for (const source of receiver.storedSources)
enqueue({
node: source.node,
path: [...source.path, current.path.at(-1)!],