Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6c1b29e

Browse files
author
Esben Sparre Andreasen
committed
JS: add missing flowstep for unused parameter field initializers
1 parent 6766716 commit 6c1b29e

4 files changed

Lines changed: 15 additions & 1 deletion

File tree

javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,18 @@ module DataFlow {
558558

559559
override string getPropertyName() { result = prop.getName() }
560560

561-
override Node getRhs() { result = parameterNode(prop.getParameter()) }
561+
override Node getRhs() {
562+
exists(Parameter param, Node paramNode |
563+
param = prop.getParameter() and
564+
parameterNode(paramNode, param)
565+
|
566+
result = paramNode
567+
or
568+
// special case: there is no SSA flow step for unused parameters
569+
paramNode instanceof UnusedParameterNode and
570+
result = param.getDefault().flow()
571+
)
572+
}
562573

563574
override ControlFlowNode getWriteNode() { result = prop.getParameter() }
564575
}

javascript/ql/test/library-tests/PropWrite/PropWriteRhs.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
| classes.ts:12:17:12:37 | public ... erField | classes.ts:12:24:12:37 | parameterField |
77
| classes.ts:16:5:16:46 | constru ... {}) {} | classes.ts:16:5:16:46 | constru ... {}) {} |
88
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:24:16:37 | parameterField |
9+
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:41:16:42 | {} |
910
| tst.js:3:5:3:8 | x: 4 | tst.js:3:8:3:8 | 4 |
1011
| tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:4:11:6:5 | functio ... ;\\n } |
1112
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:7:6:9:5 | () {\\n ... ;\\n } |

javascript/ql/test/library-tests/PropWrite/getAPropertySource.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
44
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:41:12:42 | {} |
55
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
6+
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
67
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
78
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
89
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |

javascript/ql/test/library-tests/PropWrite/hasPropertyWrite.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField |
33
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
44
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
5+
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
56
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
67
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
78
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:8:3:8 | 4 |

0 commit comments

Comments
 (0)