Skip to content

Commit 77877e0

Browse files
committed
JS: Model 'merge-descriptors' as a shallow extender and accept test changes.
1 parent 6a37610 commit 77877e0

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

javascript/ql/lib/semmle/javascript/Extend.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@ private class ExtendCallShallow extends ExtendCall {
146146
override predicate isDeep() { none() }
147147
}
148148

149+
/** A shallow extend call of form `mergeDescriptors(dst, src)`. */
150+
private class MergeDescriptorsCall extends ExtendCall {
151+
MergeDescriptorsCall() {
152+
this = DataFlow::moduleImport("merge-descriptors").getACall()
153+
}
154+
155+
override DataFlow::Node getASourceOperand() { result = this.getArgument(1) }
156+
157+
override DataFlow::Node getDestinationOperand() { result = this.getArgument(0) }
158+
159+
override predicate isDeep() { none() }
160+
}
161+
149162
/**
150163
* A shallow extend call of form `extend(src1, src2, ...)`.
151164
*/

javascript/ql/test/library-tests/Extend/ExtendCalls.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
| tst.js:64:1:64:48 | checkSh ... arg())) | OK |
3030
| tst.js:65:1:65:54 | checkSh ... arg())) | OK |
3131
| tst.js:66:1:66:45 | checkSh ... arg())) | OK |
32-
| tst.js:67:1:67:57 | checkSh ... arg())) | Not an extend call |
32+
| tst.js:67:1:67:57 | checkSh ... arg())) | OK |
3333
| tst.js:68:1:68:52 | checkSh ... arg())) | OK |
3434
| tst.js:69:1:69:53 | checkSh ... arg())) | OK |
3535
| tst.js:70:1:70:53 | checkSh ... arg())) | OK |

0 commit comments

Comments
 (0)