JavaScript: Consolidate PropWrite tests.

This commit is contained in:
Max Schaefer
2019-03-05 08:14:39 +00:00
parent 0b5599d009
commit deff97a9e6
38 changed files with 344 additions and 309 deletions

View File

@@ -1,34 +0,0 @@
| classes.ts:3:21:3:20 | constructor() {} |
| classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:39 | constru ... eld) {} |
| classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:68 | constru ... + 42; } |
| classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:46 | constru ... {}) {} |
| classes.ts:16:17:16:37 | public ... erField |
| tst.js:3:5:3:8 | x: 4 |
| tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:9:12:8 | constructor() {} |
| tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } |
| tst.js:21:1:21:6 | C.prop |
| tst.js:24:13:24:27 | onClick={click} |
| tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:28:3:28:13 | set y(v) {} |
| tst.js:32:5:32:8 | n: 1 |
| tst.js:33:5:33:10 | [v]: 2 |
| tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:38:13:38:15 | "a" |
| tst.js:38:18:38:20 | "b" |
| tst.js:38:23:38:25 | "c" |
| tst.js:39:13:39:15 | "a" |
| tst.js:39:20:39:22 | "c" |
| tst.js:40:15:40:17 | "b" |
| tst.js:40:20:40:22 | "c" |
| tst.js:41:13:41:15 | "a" |
| tst.js:41:18:41:20 | "b" |
| tst.js:42:13:42:15 | "a" |
| tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:27:42:29 | "d" |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::PropWrite p
select p

View File

@@ -0,0 +1,3 @@
import javascript
query predicate test_PropWrite(DataFlow::PropWrite p) { any() }

View File

@@ -1,28 +0,0 @@
| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:3:21:3:20 | this |
| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:3:8:2 | this |
| classes.ts:12:17:12:37 | public ... erField | classes.ts:12:5:12:4 | this |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:5:16:4 | this |
| tst.js:3:5:3:8 | x: 4 | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:13:3:15:3 | static ... x);\\n } | tst.js:12:1:19:1 | class C ... ;\\n }\\n} |
| tst.js:21:1:21:6 | C.prop | tst.js:21:1:21:1 | C |
| tst.js:24:13:24:27 | onClick={click} | tst.js:24:8:24:57 | <div on ... }</div> |
| tst.js:27:3:27:26 | get x() ... null; } | tst.js:26:2:29:1 | {\\n get ... v) {}\\n} |
| tst.js:28:3:28:13 | set y(v) {} | tst.js:26:2:29:1 | {\\n get ... v) {}\\n} |
| tst.js:32:5:32:8 | n: 1 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:33:5:33:10 | [v]: 2 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:34:5:34:14 | [vv.pp]: 3 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:38:13:38:15 | "a" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:38:18:38:20 | "b" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:38:23:38:25 | "c" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:39:13:39:15 | "a" | tst.js:39:12:39:23 | ["a", , "c"] |
| tst.js:39:20:39:22 | "c" | tst.js:39:12:39:23 | ["a", , "c"] |
| tst.js:40:15:40:17 | "b" | tst.js:40:12:40:23 | [, "b", "c"] |
| tst.js:40:20:40:22 | "c" | tst.js:40:12:40:23 | [, "b", "c"] |
| tst.js:41:13:41:15 | "a" | tst.js:41:12:41:22 | ["a", "b",] |
| tst.js:41:18:41:20 | "b" | tst.js:41:12:41:22 | ["a", "b",] |
| tst.js:42:13:42:15 | "a" | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |
| tst.js:42:18:42:24 | ...arr3 | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |
| tst.js:42:27:42:29 | "d" | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::PropWrite p
select p, p.getBase()

View File

@@ -0,0 +1,3 @@
import javascript
query predicate test_PropWriteBase(DataFlow::PropWrite p, DataFlow::Node res) { res = p.getBase() }

View File

@@ -1,19 +0,0 @@
| classes.ts:3:21:3:20 | constructor() {} | constructor |
| classes.ts:4:3:4:24 | instanc ... foo(); | instanceField |
| classes.ts:8:3:8:39 | constru ... eld) {} | constructor |
| classes.ts:8:15:8:35 | public ... erField | parameterField |
| classes.ts:12:5:12:68 | constru ... + 42; } | constructor |
| classes.ts:12:17:12:37 | public ... erField | parameterField |
| classes.ts:16:5:16:46 | constru ... {}) {} | constructor |
| classes.ts:16:17:16:37 | public ... erField | parameterField |
| tst.js:3:5:3:8 | x: 4 | x |
| tst.js:4:5:6:5 | func: f ... ;\\n } | func |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | f |
| tst.js:12:9:12:8 | constructor() {} | constructor |
| tst.js:13:3:15:3 | static ... x);\\n } | func |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } | f |
| tst.js:21:1:21:6 | C.prop | prop |
| tst.js:24:13:24:27 | onClick={click} | onClick |
| tst.js:27:3:27:26 | get x() ... null; } | x |
| tst.js:28:3:28:13 | set y(v) {} | y |
| tst.js:32:5:32:8 | n: 1 | n |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::PropWrite p
select p, p.getPropertyName()

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_PropWritePropName(DataFlow::PropWrite p, string res) {
res = p.getPropertyName()
}

View File

@@ -1,33 +0,0 @@
| classes.ts:3:21:3:20 | constructor() {} | classes.ts:3:21:3:20 | () {} |
| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:39 | constru ... eld) {} | classes.ts:8:3:8:39 | constru ... eld) {} |
| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:68 | constru ... + 42; } | classes.ts:12:5:12:68 | constru ... + 42; } |
| classes.ts:12:17:12:37 | public ... erField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:16:5:16:46 | constru ... {}) {} | classes.ts:16:5:16:46 | constru ... {}) {} |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:41:16:42 | {} |
| tst.js:3:5:3:8 | x: 4 | tst.js:3:8:3:8 | 4 |
| tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:12:9:12:8 | constructor() {} | tst.js:12:9:12:8 | () {} |
| tst.js:13:3:15:3 | static ... x);\\n } | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } | tst.js:16:4:18:3 | (x) {\\n ... x);\\n } |
| tst.js:21:1:21:6 | C.prop | tst.js:21:10:21:11 | 56 |
| tst.js:24:13:24:27 | onClick={click} | tst.js:24:22:24:26 | click |
| tst.js:32:5:32:8 | n: 1 | tst.js:32:8:32:8 | 1 |
| tst.js:33:5:33:10 | [v]: 2 | tst.js:33:10:33:10 | 2 |
| tst.js:34:5:34:14 | [vv.pp]: 3 | tst.js:34:14:34:14 | 3 |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 | tst.js:35:20:35:20 | 4 |
| tst.js:38:13:38:15 | "a" | tst.js:38:13:38:15 | "a" |
| tst.js:38:18:38:20 | "b" | tst.js:38:18:38:20 | "b" |
| tst.js:38:23:38:25 | "c" | tst.js:38:23:38:25 | "c" |
| tst.js:39:13:39:15 | "a" | tst.js:39:13:39:15 | "a" |
| tst.js:39:20:39:22 | "c" | tst.js:39:20:39:22 | "c" |
| tst.js:40:15:40:17 | "b" | tst.js:40:15:40:17 | "b" |
| tst.js:40:20:40:22 | "c" | tst.js:40:20:40:22 | "c" |
| tst.js:41:13:41:15 | "a" | tst.js:41:13:41:15 | "a" |
| tst.js:41:18:41:20 | "b" | tst.js:41:18:41:20 | "b" |
| tst.js:42:13:42:15 | "a" | tst.js:42:13:42:15 | "a" |
| tst.js:42:18:42:24 | ...arr3 | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:27:42:29 | "d" | tst.js:42:27:42:29 | "d" |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::PropWrite p
select p, p.getRhs()

View File

@@ -0,0 +1,3 @@
import javascript
query predicate test_PropWriteRhs(DataFlow::PropWrite p, DataFlow::Node res) { res = p.getRhs() }

View File

@@ -1,11 +0,0 @@
| tst.js:1:1:1:0 | this | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | tst.js:24:36:24:45 | this.state |
| tst.js:14:5:14:11 | console | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | tst.js:17:5:17:15 | console.log |
| tst.js:23:15:23:29 | this.someMethod | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:36:24:45 | this.state | tst.js:24:36:24:50 | this.state.name |
| tst.js:34:6:34:7 | vv | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | tst.js:45:3:45:13 | console.log |
| tst.js:45:15:45:17 | obj | tst.js:45:15:45:20 | obj[p] |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd
select nd, nd.getAPropertyRead()

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_getAPropertyRead(DataFlow::SourceNode nd, DataFlow::PropRead res) {
res = nd.getAPropertyRead()
}

View File

@@ -1,10 +0,0 @@
| tst.js:1:1:1:0 | this | someMethod | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | state | tst.js:24:36:24:45 | this.state |
| tst.js:14:5:14:11 | console | log | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | log | tst.js:17:5:17:15 | console.log |
| tst.js:23:15:23:29 | this.someMethod | bind | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:36:24:45 | this.state | name | tst.js:24:36:24:50 | this.state.name |
| tst.js:34:6:34:7 | vv | pp | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | ppp | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | qqq | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | log | tst.js:45:3:45:13 | console.log |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd, string prop
select nd, prop, nd.getAPropertyRead(prop)

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_getAPropertyRead2(DataFlow::SourceNode nd, string prop, DataFlow::PropRead res) {
res = nd.getAPropertyRead(prop)
}

View File

@@ -1,39 +0,0 @@
| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | classes.ts:16:17:16:37 | public ... erField |
| tst.js:1:1:1:0 | this | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | tst.js:24:36:24:45 | this.state |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:14:5:14:11 | console | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | tst.js:17:5:17:15 | console.log |
| tst.js:21:1:21:1 | C | tst.js:21:1:21:6 | C.prop |
| tst.js:23:15:23:29 | this.someMethod | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:8:24:57 | <div on ... }</div> | tst.js:24:13:24:27 | onClick={click} |
| tst.js:24:36:24:45 | this.state | tst.js:24:36:24:50 | this.state.name |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:32:5:32:8 | n: 1 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:33:5:33:10 | [v]: 2 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:34:6:34:7 | vv | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:13:38:15 | "a" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:18:38:20 | "b" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:23:38:25 | "c" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:13:39:15 | "a" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:20:39:22 | "c" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:15:40:17 | "b" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:20:40:22 | "c" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:13:41:15 | "a" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:18:41:20 | "b" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:13:42:15 | "a" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:27:42:29 | "d" |
| tst.js:45:3:45:9 | console | tst.js:45:3:45:13 | console.log |
| tst.js:45:15:45:17 | obj | tst.js:45:15:45:20 | obj[p] |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd
select nd, nd.getAPropertyReference()

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_getAPropertyReference(DataFlow::SourceNode nd, DataFlow::PropRef res) {
res = nd.getAPropertyReference()
}

View File

@@ -1,23 +0,0 @@
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:17:16:37 | public ... erField |
| tst.js:1:1:1:0 | this | someMethod | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | state | tst.js:24:36:24:45 | this.state |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:5:3:8 | x: 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:14:5:14:11 | console | log | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | log | tst.js:17:5:17:15 | console.log |
| tst.js:21:1:21:1 | C | prop | tst.js:21:1:21:6 | C.prop |
| tst.js:23:15:23:29 | this.someMethod | bind | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:13:24:27 | onClick={click} |
| tst.js:24:36:24:45 | this.state | name | tst.js:24:36:24:50 | this.state.name |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | x | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | y | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:5:32:8 | n: 1 |
| tst.js:34:6:34:7 | vv | pp | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | ppp | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | qqq | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | log | tst.js:45:3:45:13 | console.log |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd, string prop
select nd, prop, nd.getAPropertyReference(prop)

View File

@@ -0,0 +1,7 @@
import javascript
query predicate test_getAPropertyReference2(
DataFlow::SourceNode nd, string prop, DataFlow::PropRef res
) {
res = nd.getAPropertyReference(prop)
}

View File

@@ -1,10 +0,0 @@
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:41:12:42 | {} |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:22:24:26 | click |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd, string prop
select nd, prop, nd.getAPropertySource(prop)

View File

@@ -0,0 +1,7 @@
import javascript
query predicate test_getAPropertySource(
DataFlow::SourceNode nd, string prop, DataFlow::SourceNode res
) {
res = nd.getAPropertySource(prop)
}

View File

@@ -1,28 +0,0 @@
| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | classes.ts:16:17:16:37 | public ... erField |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:21:1:21:1 | C | tst.js:21:1:21:6 | C.prop |
| tst.js:24:8:24:57 | <div on ... }</div> | tst.js:24:13:24:27 | onClick={click} |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:32:5:32:8 | n: 1 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:33:5:33:10 | [v]: 2 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:13:38:15 | "a" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:18:38:20 | "b" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:23:38:25 | "c" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:13:39:15 | "a" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:20:39:22 | "c" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:15:40:17 | "b" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:20:40:22 | "c" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:13:41:15 | "a" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:18:41:20 | "b" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:13:42:15 | "a" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:27:42:29 | "d" |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd
select nd, nd.getAPropertyWrite()

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_getAPropertyWrite(DataFlow::SourceNode nd, DataFlow::PropWrite res) {
res = nd.getAPropertyWrite()
}

View File

@@ -1,13 +0,0 @@
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:17:16:37 | public ... erField |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:5:3:8 | x: 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:21:1:21:1 | C | prop | tst.js:21:1:21:6 | C.prop |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:13:24:27 | onClick={click} |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | x | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | y | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:5:32:8 | n: 1 |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::SourceNode nd, string prop
select nd, prop, nd.getAPropertyWrite(prop)

View File

@@ -0,0 +1,7 @@
import javascript
query predicate test_getAPropertyWrite2(
DataFlow::SourceNode nd, string prop, DataFlow::PropWrite res
) {
res = nd.getAPropertyWrite(prop)
}

View File

@@ -1,12 +0,0 @@
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:8:3:8 | 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:21:1:21:1 | C | prop | tst.js:21:10:21:11 | 56 |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:22:24:26 | click |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:8:32:8 | 1 |

View File

@@ -1,5 +0,0 @@
import javascript
from DataFlow::SourceNode src, string prop, DataFlow::Node rhs
where src.hasPropertyWrite(prop, rhs)
select src, prop, rhs

View File

@@ -0,0 +1,5 @@
import javascript
query predicate test_hasPropertyWrite(DataFlow::SourceNode src, string prop, DataFlow::Node rhs) {
src.hasPropertyWrite(prop, rhs)
}

View File

@@ -0,0 +1,272 @@
test_getAPropertyRead
| tst.js:1:1:1:0 | this | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | tst.js:24:36:24:45 | this.state |
| tst.js:14:5:14:11 | console | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | tst.js:17:5:17:15 | console.log |
| tst.js:23:15:23:29 | this.someMethod | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:36:24:45 | this.state | tst.js:24:36:24:50 | this.state.name |
| tst.js:34:6:34:7 | vv | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | tst.js:45:3:45:13 | console.log |
| tst.js:45:15:45:17 | obj | tst.js:45:15:45:20 | obj[p] |
test_getAPropertyReference
| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | classes.ts:16:17:16:37 | public ... erField |
| tst.js:1:1:1:0 | this | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | tst.js:24:36:24:45 | this.state |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:14:5:14:11 | console | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | tst.js:17:5:17:15 | console.log |
| tst.js:21:1:21:1 | C | tst.js:21:1:21:6 | C.prop |
| tst.js:23:15:23:29 | this.someMethod | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:8:24:57 | <div on ... }</div> | tst.js:24:13:24:27 | onClick={click} |
| tst.js:24:36:24:45 | this.state | tst.js:24:36:24:50 | this.state.name |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:32:5:32:8 | n: 1 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:33:5:33:10 | [v]: 2 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:34:6:34:7 | vv | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:13:38:15 | "a" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:18:38:20 | "b" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:23:38:25 | "c" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:13:39:15 | "a" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:20:39:22 | "c" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:15:40:17 | "b" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:20:40:22 | "c" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:13:41:15 | "a" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:18:41:20 | "b" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:13:42:15 | "a" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:27:42:29 | "d" |
| tst.js:45:3:45:9 | console | tst.js:45:3:45:13 | console.log |
| tst.js:45:15:45:17 | obj | tst.js:45:15:45:20 | obj[p] |
test_getAPropertySource
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:41:12:42 | {} |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:22:24:26 | click |
test_PropWritePropName
| classes.ts:3:21:3:20 | constructor() {} | constructor |
| classes.ts:4:3:4:24 | instanc ... foo(); | instanceField |
| classes.ts:8:3:8:39 | constru ... eld) {} | constructor |
| classes.ts:8:15:8:35 | public ... erField | parameterField |
| classes.ts:12:5:12:68 | constru ... + 42; } | constructor |
| classes.ts:12:17:12:37 | public ... erField | parameterField |
| classes.ts:16:5:16:46 | constru ... {}) {} | constructor |
| classes.ts:16:17:16:37 | public ... erField | parameterField |
| tst.js:3:5:3:8 | x: 4 | x |
| tst.js:4:5:6:5 | func: f ... ;\\n } | func |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | f |
| tst.js:12:9:12:8 | constructor() {} | constructor |
| tst.js:13:3:15:3 | static ... x);\\n } | func |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } | f |
| tst.js:21:1:21:6 | C.prop | prop |
| tst.js:24:13:24:27 | onClick={click} | onClick |
| tst.js:27:3:27:26 | get x() ... null; } | x |
| tst.js:28:3:28:13 | set y(v) {} | y |
| tst.js:32:5:32:8 | n: 1 | n |
test_getAPropertyRead2
| tst.js:1:1:1:0 | this | someMethod | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | state | tst.js:24:36:24:45 | this.state |
| tst.js:14:5:14:11 | console | log | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | log | tst.js:17:5:17:15 | console.log |
| tst.js:23:15:23:29 | this.someMethod | bind | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:36:24:45 | this.state | name | tst.js:24:36:24:50 | this.state.name |
| tst.js:34:6:34:7 | vv | pp | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | ppp | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | qqq | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | log | tst.js:45:3:45:13 | console.log |
test_getAPropertyReference2
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:17:16:37 | public ... erField |
| tst.js:1:1:1:0 | this | someMethod | tst.js:23:15:23:29 | this.someMethod |
| tst.js:1:1:1:0 | this | state | tst.js:24:36:24:45 | this.state |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:5:3:8 | x: 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:14:5:14:11 | console | log | tst.js:14:5:14:15 | console.log |
| tst.js:17:5:17:11 | console | log | tst.js:17:5:17:15 | console.log |
| tst.js:21:1:21:1 | C | prop | tst.js:21:1:21:6 | C.prop |
| tst.js:23:15:23:29 | this.someMethod | bind | tst.js:23:15:23:34 | this.someMethod.bind |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:13:24:27 | onClick={click} |
| tst.js:24:36:24:45 | this.state | name | tst.js:24:36:24:50 | this.state.name |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | x | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | y | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:5:32:8 | n: 1 |
| tst.js:34:6:34:7 | vv | pp | tst.js:34:6:34:10 | vv.pp |
| tst.js:35:6:35:8 | vvv | ppp | tst.js:35:6:35:12 | vvv.ppp |
| tst.js:35:6:35:12 | vvv.ppp | qqq | tst.js:35:6:35:16 | vvv.ppp.qqq |
| tst.js:45:3:45:9 | console | log | tst.js:45:3:45:13 | console.log |
test_hasPropertyWrite
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:41:16:42 | {} |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:8:3:8 | 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:21:1:21:1 | C | prop | tst.js:21:10:21:11 | 56 |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:22:24:26 | click |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:8:32:8 | 1 |
test_PropWriteBase
| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:3:21:3:20 | this |
| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:3:8:2 | this |
| classes.ts:12:17:12:37 | public ... erField | classes.ts:12:5:12:4 | this |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:5:16:4 | this |
| tst.js:3:5:3:8 | x: 4 | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} |
| tst.js:13:3:15:3 | static ... x);\\n } | tst.js:12:1:19:1 | class C ... ;\\n }\\n} |
| tst.js:21:1:21:6 | C.prop | tst.js:21:1:21:1 | C |
| tst.js:24:13:24:27 | onClick={click} | tst.js:24:8:24:57 | <div on ... }</div> |
| tst.js:27:3:27:26 | get x() ... null; } | tst.js:26:2:29:1 | {\\n get ... v) {}\\n} |
| tst.js:28:3:28:13 | set y(v) {} | tst.js:26:2:29:1 | {\\n get ... v) {}\\n} |
| tst.js:32:5:32:8 | n: 1 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:33:5:33:10 | [v]: 2 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:34:5:34:14 | [vv.pp]: 3 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 | tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} |
| tst.js:38:13:38:15 | "a" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:38:18:38:20 | "b" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:38:23:38:25 | "c" | tst.js:38:12:38:26 | ["a", "b", "c"] |
| tst.js:39:13:39:15 | "a" | tst.js:39:12:39:23 | ["a", , "c"] |
| tst.js:39:20:39:22 | "c" | tst.js:39:12:39:23 | ["a", , "c"] |
| tst.js:40:15:40:17 | "b" | tst.js:40:12:40:23 | [, "b", "c"] |
| tst.js:40:20:40:22 | "c" | tst.js:40:12:40:23 | [, "b", "c"] |
| tst.js:41:13:41:15 | "a" | tst.js:41:12:41:22 | ["a", "b",] |
| tst.js:41:18:41:20 | "b" | tst.js:41:12:41:22 | ["a", "b",] |
| tst.js:42:13:42:15 | "a" | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |
| tst.js:42:18:42:24 | ...arr3 | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |
| tst.js:42:27:42:29 | "d" | tst.js:42:12:42:30 | ["a", ...arr3, "d"] |
test_getAPropertyWrite
| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | classes.ts:16:17:16:37 | public ... erField |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:21:1:21:1 | C | tst.js:21:1:21:6 | C.prop |
| tst.js:24:8:24:57 | <div on ... }</div> | tst.js:24:13:24:27 | onClick={click} |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:32:5:32:8 | n: 1 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:33:5:33:10 | [v]: 2 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:13:38:15 | "a" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:18:38:20 | "b" |
| tst.js:38:12:38:26 | ["a", "b", "c"] | tst.js:38:23:38:25 | "c" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:13:39:15 | "a" |
| tst.js:39:12:39:23 | ["a", , "c"] | tst.js:39:20:39:22 | "c" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:15:40:17 | "b" |
| tst.js:40:12:40:23 | [, "b", "c"] | tst.js:40:20:40:22 | "c" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:13:41:15 | "a" |
| tst.js:41:12:41:22 | ["a", "b",] | tst.js:41:18:41:20 | "b" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:13:42:15 | "a" |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:12:42:30 | ["a", ...arr3, "d"] | tst.js:42:27:42:29 | "d" |
test_PropWrite
| classes.ts:3:21:3:20 | constructor() {} |
| classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:39 | constru ... eld) {} |
| classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:68 | constru ... + 42; } |
| classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:46 | constru ... {}) {} |
| classes.ts:16:17:16:37 | public ... erField |
| tst.js:3:5:3:8 | x: 4 |
| tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:12:9:12:8 | constructor() {} |
| tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } |
| tst.js:21:1:21:6 | C.prop |
| tst.js:24:13:24:27 | onClick={click} |
| tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:28:3:28:13 | set y(v) {} |
| tst.js:32:5:32:8 | n: 1 |
| tst.js:33:5:33:10 | [v]: 2 |
| tst.js:34:5:34:14 | [vv.pp]: 3 |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 |
| tst.js:38:13:38:15 | "a" |
| tst.js:38:18:38:20 | "b" |
| tst.js:38:23:38:25 | "c" |
| tst.js:39:13:39:15 | "a" |
| tst.js:39:20:39:22 | "c" |
| tst.js:40:15:40:17 | "b" |
| tst.js:40:20:40:22 | "c" |
| tst.js:41:13:41:15 | "a" |
| tst.js:41:18:41:20 | "b" |
| tst.js:42:13:42:15 | "a" |
| tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:27:42:29 | "d" |
test_getAPropertyWrite2
| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); |
| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField |
| classes.ts:12:5:12:4 | this | parameterField | classes.ts:12:17:12:37 | public ... erField |
| classes.ts:16:5:16:4 | this | parameterField | classes.ts:16:17:16:37 | public ... erField |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:5:6:5 | func: f ... ;\\n } |
| tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:5:3:8 | x: 4 |
| tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:3:15:3 | static ... x);\\n } |
| tst.js:21:1:21:1 | C | prop | tst.js:21:1:21:6 | C.prop |
| tst.js:24:8:24:57 | <div on ... }</div> | onClick | tst.js:24:13:24:27 | onClick={click} |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | x | tst.js:27:3:27:26 | get x() ... null; } |
| tst.js:26:2:29:1 | {\\n get ... v) {}\\n} | y | tst.js:28:3:28:13 | set y(v) {} |
| tst.js:31:2:36:1 | {\\n n ... q]: 4\\n} | n | tst.js:32:5:32:8 | n: 1 |
test_PropWriteRhs
| classes.ts:3:21:3:20 | constructor() {} | classes.ts:3:21:3:20 | () {} |
| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:4:19:4:23 | foo() |
| classes.ts:8:3:8:39 | constru ... eld) {} | classes.ts:8:3:8:39 | constru ... eld) {} |
| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:22:8:35 | parameterField |
| classes.ts:12:5:12:68 | constru ... + 42; } | classes.ts:12:5:12:68 | constru ... + 42; } |
| classes.ts:12:17:12:37 | public ... erField | classes.ts:12:24:12:37 | parameterField |
| classes.ts:16:5:16:46 | constru ... {}) {} | classes.ts:16:5:16:46 | constru ... {}) {} |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:24:16:37 | parameterField |
| classes.ts:16:17:16:37 | public ... erField | classes.ts:16:41:16:42 | {} |
| tst.js:3:5:3:8 | x: 4 | tst.js:3:8:3:8 | 4 |
| tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:4:11:6:5 | functio ... ;\\n } |
| tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:7:6:9:5 | () {\\n ... ;\\n } |
| tst.js:12:9:12:8 | constructor() {} | tst.js:12:9:12:8 | () {} |
| tst.js:13:3:15:3 | static ... x);\\n } | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } |
| tst.js:16:3:18:3 | f(x) {\\n ... x);\\n } | tst.js:16:4:18:3 | (x) {\\n ... x);\\n } |
| tst.js:21:1:21:6 | C.prop | tst.js:21:10:21:11 | 56 |
| tst.js:24:13:24:27 | onClick={click} | tst.js:24:22:24:26 | click |
| tst.js:32:5:32:8 | n: 1 | tst.js:32:8:32:8 | 1 |
| tst.js:33:5:33:10 | [v]: 2 | tst.js:33:10:33:10 | 2 |
| tst.js:34:5:34:14 | [vv.pp]: 3 | tst.js:34:14:34:14 | 3 |
| tst.js:35:5:35:20 | [vvv.ppp.qqq]: 4 | tst.js:35:20:35:20 | 4 |
| tst.js:38:13:38:15 | "a" | tst.js:38:13:38:15 | "a" |
| tst.js:38:18:38:20 | "b" | tst.js:38:18:38:20 | "b" |
| tst.js:38:23:38:25 | "c" | tst.js:38:23:38:25 | "c" |
| tst.js:39:13:39:15 | "a" | tst.js:39:13:39:15 | "a" |
| tst.js:39:20:39:22 | "c" | tst.js:39:20:39:22 | "c" |
| tst.js:40:15:40:17 | "b" | tst.js:40:15:40:17 | "b" |
| tst.js:40:20:40:22 | "c" | tst.js:40:20:40:22 | "c" |
| tst.js:41:13:41:15 | "a" | tst.js:41:13:41:15 | "a" |
| tst.js:41:18:41:20 | "b" | tst.js:41:18:41:20 | "b" |
| tst.js:42:13:42:15 | "a" | tst.js:42:13:42:15 | "a" |
| tst.js:42:18:42:24 | ...arr3 | tst.js:42:18:42:24 | ...arr3 |
| tst.js:42:27:42:29 | "d" | tst.js:42:27:42:29 | "d" |

View File

@@ -0,0 +1,12 @@
import getAPropertyRead
import getAPropertyReference
import getAPropertySource
import PropWritePropName
import getAPropertyRead2
import getAPropertyReference2
import hasPropertyWrite
import PropWriteBase
import getAPropertyWrite
import PropWrite
import getAPropertyWrite2
import PropWriteRhs