-
fix: JS/Kotlin/Swift/SQL extractor correctness batch; bump to 0.9.38 (#2568, #2565, #2561, #2577, #2575)
发布于
2026-08-09 22:19:08 +00:00 These changes are interleaved across engine.py/extract.py by function, so
they land as one batch.#2568 (thanks @imagineers-tyler): the 0.9.37 #2552 callback-body fix
unioned sibling closures' local names under the shared declaration, so a
local in one callback suppressed a real indirect_call in a sibling. Locals
are now scoped per body (keyed by body id, via walk_calls' extra_locals).
Restore-only, never fabricates; #2552 capture preserved.#2565 (thanks @kskchaitanya1993): Kotlin property initializers — class,
top-level, companion, andby lazy {}— now seed call extraction, so
val repo = createRepo()produces a calls edge; literal initializers
produce none; FQ calls compose with the #2550 resolver.#2561 (thanks @fakewaffle): Swift receiver typing now handles
@Environment(Store.self)(whitelisted; @Query/keypath/dotted skipped to
avoid a wrong edge) and in-corpus factory bindings via a marked concrete
return type; opaque/array/out-of-corpus returns stay unresolved.#2577 (thanks @wilyan09007, PR #2579): the SQL extractor no longer emits a
reads_from edge to a CTE name. WITH names are scoped per query (a subquery
CTE no longer suppresses an outer real table of the same name), so a CTE
no longer mints a bare stub that binds to an unrelated same-named symbol.#2575 (thanks @phudayyy, PR #2574): a dynamic
import('…')inside a nested
function or at module scope now produces an edge, dynamic_import is
included in affected, and calls inside nested named functions are
collected; a dynamic import already captured as a deferred imports_from is
not double-counted.Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
下载附件