Skip to content

fix(elixir): emit calls edges for keyword-form def bodies - #4210

Closed
rtmalikian wants to merge 1 commit into
Graphify-Labs:v8from
rtmalikian:fix/4207-elixir-keyword-def-calls
Closed

rtmalikian wants to merge 1 commit into
Graphify-Labs:v8from
rtmalikian:fix/4207-elixir-keyword-def-calls

fix(elixir): emit calls edges for keyword-form def bodies

b00d370
Select commit
Loading
Failed to load commit list.
Graphify Labs / Graphify succeeded Oct 7, 2026 in 1m 14s

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

Fixes dropped calls edges for keyword-form Elixir definitions (def a(x), do: b(x)) by having _get_do_keyword_body pull the do: value out of the arguments keywords and queue it for the call walk whenever a definition has no do_block. This also covers when-guarded heads. Definitions with neither form register no body, same as before. New tests check that keyword bodies produce edges to local functions and no edges to undefined ones.

No blocking issues surfaced. 1 lower-confidence candidate did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 37 functions depend on the 25 functions this change touches.

Health — this change adds coupling hotspots:

  • new: extract_elixir() — 14 callers, 6 callees
  • new: walk() — 1 callers, 7 callees

Verification — 37 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: 37 function(s) in the blast radius were not formally verified this run

Test selection

Test selection

2 of 345 test file(s) selected (1%) via static blast radius.

  • tests/test_elixir_keyword_def_calls.py — impact, changed-test
  • tests/test_languages.py — impact

Selection is safe under the controlled-regression assumption; always-run tests + a periodic full run are the backstops. Advisory — it never changes the check verdict.