Files
Martin Vogel d63ba9f66d
DCO / dco (push) Has been cancelled
Fast Repro / fast (push) Has been cancelled
fix(extract): callable-source Lisp/Elixir in-body calls; correct starlark fixture
Per-case-verified callable-sourcing fixes (AST-confirmed via a standalone dumper).

PRODUCTION BUGS:
- Clojure/Scheme/Racket: [CBM_LANG_*] had empty function_node_types, so no
  SCOPE_FUNC was pushed and every in-body call sourced to Module. Wire
  clojure_func_types={"list_lit"}, scheme/racket={"list"}. Since these kinds also
  match plain call forms, gate def-vs-call in compute_func_qn (extract_unified.c,
  which has ctx->source; the shared resolver does not): compute_lisp_func_qn
  returns the def name only when the list head is a def-form (defn/define/...),
  NULL otherwise, so non-def lists like (add x 1) push no scope.
- Elixir: def/defp/defmacro are `call` nodes (so are in-body calls); the shared
  resolver returned NULL for them. compute_elixir_func_qn names a def call (gated
  strictly on the def-macro target) and returns NULL for non-def calls.

BROKEN FIXTURE (production correct) -- Starlark: extraction works; the in-body
go_binary(...) callee is an EXTERNAL undefined rule, so it correctly yields no
CALLS edge (unresolved callee -> no edge, universal behavior). Added a same-file
_base_deps() def called inside make_binary's body for a resolvable in-body call
-> Function-sourced edge. go_binary(...) kept (dim-6 callee assertion preserved).

Reproduced by repro_grammar_{functional,scripting,config} (Clojure/Scheme/Racket/
Elixir/Starlark callable-sourcing were RED). AWK (rule-naming) + Dart (structural)
deferred to focused tasks.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-06-27 08:37:57 +02:00
..
2026-06-03 02:13:30 +02:00