diff --git a/src/domain/javascript/javascriptSemanticCallResolution.test.ts b/src/domain/javascript/javascriptSemanticCallResolution.test.ts index c48925801b..5b91406716 100644 --- a/src/domain/javascript/javascriptSemanticCallResolution.test.ts +++ b/src/domain/javascript/javascriptSemanticCallResolution.test.ts @@ -82,7 +82,7 @@ it("bounds shared partial callback alias expansion by AST size", () => { expect(large.referenceReads).toBeLessThan(3 * small.referenceReads); }); -it("closes reassignment meshes at bindings whose reads select every write", () => { +it("bounds reassignment meshes by write pairs when reads select every write", () => { const measure = (writes: number) => { const context = indexed(`function f(){} function g(){} let a = f, b = g; function run(){ ${Array.from({ length: writes }, (_, i) => (i % 2 === 0 ? "a=b;" : "b=a;")).join("")} a(); }`); diff --git a/src/domain/javascript/javascriptSemanticCallResolution.ts b/src/domain/javascript/javascriptSemanticCallResolution.ts index 2ccb4f47b0..75e1d765c7 100644 --- a/src/domain/javascript/javascriptSemanticCallResolution.ts +++ b/src/domain/javascript/javascriptSemanticCallResolution.ts @@ -108,8 +108,8 @@ const resolveIdentifier = ( ); // A read that selects every initializer resolves the same candidates // wherever the chain re-enters it, and a longer chain can only cut more of - // them, so re-entry adds no target. Closing that cycle at the binding keeps - // alias meshes linear instead of enumerating every initializer order. + // them, so re-entry adds no target. Closing that cycle at the binding bounds + // an alias mesh by pairs of writes instead of every initializer order. // Position-narrowed reads keep their per-initializer cycles. const selectsAll = read.binding === binding; if (selectsAll && context.seenBindings.has(binding))