fix(extraction): never fabricate an edge from a call-result receiver (#1748)
A member call whose receiver is itself a call — `d.setdefault(k, []).append(v)`, `make().run()` — used to drop the receiver at extraction time, degrade to the bare method name, and exact-match any top-level project symbol of that name (Python and JavaScript/TypeScript). Keep the inner callee encoded as `<inner>().<method>` in the TS extractor and native kernel; the name-matcher refuses to guess for that shape (store-accessor exception only). Based on #1692, rebased onto main after #1746. Fixes #1683. Co-authored-by: Colby McHenry <colbymchenry@users.noreply.github.com>
This commit is contained in:
co-authored by
Colby McHenry
parent
bffd50e4f1
commit
bb1d3093eb
@@ -73,3 +73,12 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
// --- call-expression receivers (#1683) ----------------------------------------
|
||||
function bucketChains(d, k, v) {
|
||||
d.setdefault(k, []).append(v);
|
||||
make().run();
|
||||
(0, make)().run();
|
||||
arr[0]().go();
|
||||
obj.make().run().again();
|
||||
}
|
||||
|
||||
@@ -47,3 +47,12 @@ def shadowed():
|
||||
|
||||
handlers = {"recv": target_cb}
|
||||
callbacks = [target_cb, view]
|
||||
|
||||
|
||||
# --- call receivers (#1683) ---------------------------------------------------
|
||||
def bucket_chains(d, k, v):
|
||||
d.setdefault(k, []).append(v)
|
||||
d.items().get(k)
|
||||
make().run()
|
||||
(lambda: make)()().run()
|
||||
obj.make().run().again()
|
||||
|
||||
Reference in New Issue
Block a user