feat(javascript): link assignment right-hand sides to their writes (#6206)

* feat(javascript): link assignment right-hand sides to their writes

A declaration carries its value forward, but a later assignment to a
variable, a property or through a compound operator stopped the forward
trace at the right-hand-side read. The semantic IR now records one
syntactic assignment flow per simple assignment target (ranges, operator,
owning callable), and the graph projection connects each retained read
of the right-hand side to the write occurrence through a defines
relation. Compound assignments also consume the previous value of the
target; the written value itself stays unknown, keeping the boundary of
#4342 intact.

Fixes #6193

* fix(javascript): preserve computed key assignment ownership

* test(javascript): retain nested callback assignment ownership

* docs(javascript): record assignment influence verification

* test(mcp): isolate mocks and acknowledge cancellation boundaries

* test(javascript): retain CLI diagnostics and current-main verification

---------

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
This commit is contained in:
Iven Kooandgensokyo-dev authored and GitHub committed 2026-10-24 10:04:38 +08:00
1 parent 2968d1e932
commit 9df94a62cd
17 files changed
+702 -35

No files matched your search

+1 -8
View File
@@ -11,15 +11,12 @@ export const SOURCE_TEST_PROJECTS = [
name: "services",
group: "source",
include: ["src/application/**/*.test.ts"],
exclude: ["src/application/EvidenceBundleFiles.test.ts"],
},
{
name: "adapters",
group: "source",
include: [
"src/*.test.ts",
// This application fixture replaces a module and needs a fresh graph.
"src/application/EvidenceBundleFiles.test.ts",
"src/{android,apkSignature,apktool,jeb,adb,artifacts,browser,config,cutter,dotnet,electron,erlang,evm,firmware,flutter,pcap,ghidra,go,gpu,hopper,ida,inspector,javascript,main,native,process,python,reference,rust,server,sqlite,wasm,windows}/**/*.test.ts",
],
},
@@ -69,7 +66,6 @@ export const BUILT_TEST_PROJECTS = [
name: "mcp-boundary",
group: "built",
include: ["tests/boundary/mcp/**/*.test.ts"],
exclude: ["tests/boundary/mcp/javascriptAnalysisCancellation.test.ts"],
},
{
name: "acceptance",
@@ -79,10 +75,7 @@ export const BUILT_TEST_PROJECTS = [
{
name: "process-global",
group: "built",
include: [
"tests/process-global/**/*.test.ts",
"tests/boundary/mcp/javascriptAnalysisCancellation.test.ts",
],
include: ["tests/process-global/**/*.test.ts"],
},
];