Skip to content

fix(extract): shadow a single unparenthesised arrow parameter from indirect_call args - #2569

Closed
imagineers-tyler wants to merge 1 commit into
Graphify-Labs:v8from
imagineers-tyler:fix/js-arrow-single-param-shadow
Closed

fix(extract): shadow a single unparenthesised arrow parameter from indirect_call args#2569
imagineers-tyler wants to merge 1 commit into
Graphify-Labs:v8from
imagineers-tyler:fix/js-arrow-single-param-shadow

fix(extract): shadow a single unparenthesised arrow parameter from in…

f74535d
Select commit
Loading
Failed to load commit list.
Graphify Labs / Graphify succeeded Aug 9, 2026 in 0s

Graphify — looks good

Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).

Details

Graphify reviewed this change.

Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).


Graphify review — findings

This PR modifies _js_local_bound_names in the JavaScript extractor to also collect identifiers from an arrow function's singular parameter field, in addition to the existing parameters list field. This targets the case of single unparenthesised arrow parameters (e.g. x => f(x)), which previously had no parameters list node. It adds a new test file with five cases covering single-param, parenthesised, and async arrow forms, plus checks that genuine references outside the arrow and unshadowed references inside the arrow body still produce indirect_call edges. The changed-symbols list also references many other engine functions, but the diff shown only touches this one function and the new test file.

No blocking issues surfaced.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 590 functions depend on the 197 functions this change touches.

Health — grade A; 10 existing hotspot(s) in the area this change touches (pre-existing, not introduced here):

  • _extract_generic() — 18 callers, 22 callees (high)
  • extract_xaml() — 19 callers, 17 callees (high)
  • extract_objc() — 27 callers, 8 callees (high)
  • extract_julia() — 16 callers, 7 callees (high)
  • extract_vue() — 10 callers, 6 callees (high)
  • walk() — 1 callers, 52 callees (high)
  • extract_groovy() — 14 callers, 3 callees (high)
  • extract_astro() — 6 callers, 5 callees (medium)
  • …and 2 more

Verification — 590 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 531 function(s) in the blast radius were not formally verified this run