mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-11 03:38:07 +00:00
`mapReferenceKindToEdgeType` has handled the registration-vs-invocation case since #2437, and TypeScript, JavaScript and C++ all emit `value-ref`. Zig emitted zero — so a Zig function handed somewhere as a VALUE was absent from the graph entirely. That is not a corner: Zig's JS bridge is built out of this one shape, pub const namespaceURI = bridge.accessor(Element.getNamespaceUri, null, .{}); and `bridge.{accessor,function,indexed,…}` appears 2,047 times across 257 files in lightpanda-io/browser — the project's whole JS<->Zig surface, none of it reaching the graph. `impact` on `Element.getNamespaceUri`, which IS the DOM `Element.namespaceURI` accessor, answered with its two in-file callers. Three query rules, tagging `@reference.value-ref` on: a bare identifier in argument position (`bridge.accessor(_tagName, …)`), a qualified one (`bridge.accessor(Element.getNamespaceUri, …)`), and a const binding initialiser (`pub const defaultHandler = onReset;`). Everything downstream already existed — no new edge type, no schema change, no capture-machinery change, no baseline edited. One grammar detail is load-bearing: in tree-sitter-zig, call arguments are DIRECT children of `call_expression` — there is no `arguments` node, only builtins have one — so the callee has to be consumed explicitly by `function:`. Without that binding the same rule also matches the callee of `foo(bar)` and mints a USES edge shadowing the call's own CALLS edge. There is a test for it. The rules are deliberately broad — `js.Bridge(Element)` and `register(count)` match too — because the callable gate in the property-dispatch pass (Function/Method/Constructor only) is the filter, the same design that keeps TypeScript's `{ port: DEFAULT_PORT }` from registering anything. Measured on the real corpus: all 3,169 emitted edges land on a Method (3,146) or Function (23). Deliberately NOT modelled: the terminal invoke. The value reaches `Accessor.init` -> a struct field -> `Factory.zig` reflection (`inline for`, `@typeInfo`) -> `Caller.zig`'s `@call(.auto, func, args)` over `func: anytype`. Resolving that needs comptime evaluation. The point is to stop dropping the reference; the shortfall is now reported as `epistemic: "lower-bound"` by the preceding commit instead of being papered over. Measured on lightpanda-io/browser (698 .zig files), wiped index both times: 30,222 nodes / 71,070 edges -> 30,222 nodes / 74,229 edges. The delta is entirely `USES` (3,169 after vs 10 before, and every one is a value-ref); CALLS, ACCESSES, IMPORTS, HAS_METHOD, DEFINES and the rest are unchanged — purely additive, no node invented. The fixture joins the existing `zig-idioms` corpus rather than adding a new one, because `bench/receiver-resolution` uses `test/fixtures/lang-resolution` as its `--check` corpus. That gate, `scope-capture` (15 languages), `zig-cross-file-resolution` and every other bench `--check` pass unchanged. |
||
|---|---|---|
| .. | ||
| cobol | ||
| cross-file-binding | ||
| csharp-captures-golden | ||
| data-route-table-app | ||
| dispatch-guard-app/src/server | ||
| django-subdir-app/backend | ||
| expo-app | ||
| fastapi-composed-app | ||
| fastapi-prefix-app | ||
| go-captures-golden | ||
| group | ||
| kotlin-spring-route-app/src/main/kotlin/com/example | ||
| lang-resolution | ||
| mini-repo/src | ||
| multi-verb-route-app | ||
| nest-route-app/src | ||
| orm-repo/src | ||
| php-captures-golden | ||
| pipeline-golden/mini-repo | ||
| python-captures-golden | ||
| python-scope-integration | ||
| ruby-captures-golden | ||
| rust-captures-golden | ||
| sample-code | ||
| spring-bean-app/src/main | ||
| spring-config-app/src/main | ||
| spring-config-shadow-app/src/main | ||
| spring-destination-app/src/main | ||
| spring-non-http-handler-app/src/main | ||
| spring-route-app/src/main/java/com/example/controller | ||
| swift-captures-golden | ||
| vue-scope | ||
| api-impact-seed.ts | ||
| group-sync-lock-child.mjs | ||
| index-lock-child.mjs | ||
| local-backend-seed.ts | ||
| search-seed.ts | ||