Skip to content

Commit 2a3bc0f

Browse files
committed
JS: Add spread step when bactracking in API graphs
1 parent 9f2897b commit 2a3bc0f

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

javascript/ql/src/semmle/javascript/ApiGraphs.qll

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,18 @@ module API {
750750
)
751751
)
752752
or
753+
exists(ObjectExpr obj |
754+
obj = trackDefNode(nd, t.continue()).asExpr() and
755+
result =
756+
obj.getAProperty()
757+
.(SpreadProperty)
758+
.getInit()
759+
.(SpreadElement)
760+
.getOperand()
761+
.flow()
762+
.getALocalSource()
763+
)
764+
or
753765
t = defStep(nd, result)
754766
}
755767

javascript/ql/test/ApiGraphs/spread/VerifyAssertions.expected

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import ApiGraphs.VerifyAssertions
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "spread",
3+
"dependencies": {
4+
"something": "*"
5+
}
6+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const lib = require('something');
2+
3+
function f() {
4+
return {
5+
x: new Object() /* def (member x (parameter 0 (member m1 (member exports (module something))))) */
6+
}
7+
}
8+
9+
lib.m1({
10+
...f()
11+
})

0 commit comments

Comments
 (0)