fix(pipeline): suppress weak Python member calls - #1324
Conversation
Signed-off-by: imi <hoshinoimi@gmail.com>
|
Reviewed properly, and this needs changes — but I want to start with what is right, because the direction is correct and the diagnosis behind it is excellent. Issue #1276 is one of the best bug reports this repo has received. Reproducible on public code, a quantified repo-wide invariant (55 production→test edges in a 12k-node repo), and a correct implementation-level diagnosis — unflagged Your tests are exemplary too — both resolver paths exercised, the parallel one reconstructed with the Now the problem, and unlike most red PRs I have looked at tonight, this CI failure is genuinely yours. Our smoke fixture is: from pkg import helper
result = helper.compute(42)and all three smoke legs fail identically with The reason is a real Python-versus-TypeScript semantic difference rather than a coding slip. In Python, The fix shape: exempt receivers that are known imports of the file. Extraction already has the import table, or the resolution side can consult the import map before applying the guard — flag Please also add a positive test pinning One more genuine failure: clang-format violations in the new Two of your six failures are not yours: One thing worth the maintainer's eyes that I have flagged separately: the With the import-receiver exemption this lands as a flagship graph-quality improvement. The hard part — finding and proving the false-edge factory — is already done. |
What does this PR do?
Fixes #1276.
Python attribute calls were not consistently classified as member calls, allowing weak
suffix_match,unique, andfield_type_hintresolutions to create false-positiveCALLSedges when no import-reachable target existed.This change marks non-
self/cls/superreceiver calls as method calls and applies the existing weak-member suppression policy consistently in sequential and parallel resolution. Strong LSP, import, same-module, and service resolutions remain available. Regression coverage exercises extraction plus both pipeline modes.Verification
make -f Makefile.cbm test-focused TEST_SUITES='cypher extraction registry pipeline mcp index_resilience'Checklist
git commit -s) and follows the Contributor License Agreementmake -f Makefile.cbm test) — focused sanitized suites passedmake -f Makefile.cbm lint-ci) — not run locally