GitNexus/gitnexus/test
Gergo Magyar 5165d71d7b fix(cfg): harvest C++ structured-binding defs (auto [a,b]=e) (#2195)
The C++ def/use harvester only recorded a def when an init_declarator's
declarator was a plain identifier, so a structured binding (auto [a,b] = mk(),
incl. the auto& reference form whose binding sits under a reference_declarator)
declared only the first name in phase 1 and emitted ZERO defs in phase 2 — a,b
were walked as spurious uses and later use(a)/use(b) resolved to a synthetic
module binding, silently corrupting REACHING_DEF/taint for an idiomatic C++17
shape. Unwrap the structured_binding_declarator in both phases and def every
identifier leaf; result-of-initializer flows to the whole list. Inert for C
(no structured bindings). Characterization tests added (plain + reference form).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 18:39:28 +00:00
..
fixtures fix(cpp): suppress deleted overload winners (#2094) 2026-06-10 18:41:30 +01:00
helpers style(cfg): apply prettier + drop unused imports across the PDG files (#2195) 2026-06-14 17:29:48 +00:00
integration style(cfg): apply prettier + drop unused imports across the PDG files (#2195) 2026-06-14 17:29:48 +00:00
unit fix(cfg): harvest C++ structured-binding defs (auto [a,b]=e) (#2195) 2026-06-14 18:39:28 +00:00
utils perf(hooks): cmdline-first Linux db-lock scan, drop the lsof fallback (#2180) (#2183) 2026-06-13 11:52:14 +01:00