GitNexus/gitnexus/bench/python-scope
Abhigyan Patwari 278863068f
fix(scope): follow namespace factory return types and record untyped drops (#3648)
`ns.make()` now takes `make`'s return annotation from the namespace's module,
in both the bound (`x = rp.make()`) and inline (`rp.make().m()`) forms, for
every language whose provider records return annotations; Dart binds its
prefixed-call locals so the same lookup applies. The lookup fails closed
whenever it cannot prove the fact: the return must be anchored on a
module-level Function of that name (TS/Dart hoist method returns, Go binds
package-scope methods), the namespace must bind the module it targets
(`import pkg.sub`), and a dotted return is not followed further. The
namespace-name set is built from finalized import edges, never a
`scopeTree.byId` walk, so it is safe under GITNEXUS_DISK_SCOPE_INDEX=1.

Calls the analyzer cannot type are recorded as receiver-unresolved drops
instead of exact misses: a receiver bound to an untyped namespace call, and
an outer call that shares its start position with an inner one (site
identity is now `receiver.member`).

Corpus A/B against main: identical CALLS/ACCESSES edges outside the new
fixtures. Receiver bench: call drops 128 -> 153, reads 44 -> 48.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:24:26 +00:00
..
baseline-fingerprint.txt fix(scope): follow namespace factory return types and record untyped drops (#3648) 2026-10-21 10:24:26 +00:00
baseline-import-target-fingerprint.txt perf(ingestion): linearize scope-capture across all languages + Python import resolution (O(n²)→O(n)) (#1918) 2026-05-30 19:44:22 +01:00
import-target-fingerprint.mjs perf(ingestion): linearize scope-capture across all languages + Python import resolution (O(n²)→O(n)) (#1918) 2026-05-30 19:44:22 +01:00
measure.mjs fix(deps): upgrade native tree-sitter to 0.25.1 (#3531) 2026-10-10 13:07:59 +03:00