Merge branch 'master' into Maps

This commit is contained in:
Erik Krogh Kristensen
2020-04-15 20:41:22 +02:00
463 changed files with 11998 additions and 4319 deletions

View File

@@ -1,3 +1,123 @@
getIntValue
| tst2.ts:1:21:1:21 | 1 | 1 |
| tst.js:6:1:6:1 | 1 | 1 |
| tst.js:11:1:11:2 | -1 | -1 |
| tst.js:11:2:11:2 | 1 | 1 |
| tst.js:12:2:12:2 | 0 | 0 |
| tst.js:26:3:26:3 | 0 | 0 |
| tst.js:29:6:29:6 | 0 | 0 |
| tst.js:35:1:35:1 | 1 | 1 |
| tst.js:35:5:35:5 | 2 | 2 |
| tst.js:35:9:35:9 | 3 | 3 |
| tst.js:37:1:37:3 | (1) | 1 |
| tst.js:37:2:37:2 | 1 | 1 |
| tst.js:39:4:39:4 | 1 | 1 |
| tst.js:40:1:40:1 | 1 | 1 |
| tst.js:42:1:42:1 | 1 | 1 |
| tst.js:42:4:42:4 | 2 | 2 |
| tst.js:42:7:42:7 | 3 | 3 |
| tst.js:43:4:43:4 | 2 | 2 |
| tst.js:43:7:43:7 | 3 | 3 |
| tst.js:44:1:44:1 | 1 | 1 |
| tst.js:44:7:44:7 | 3 | 3 |
| tst.js:45:1:45:1 | 1 | 1 |
| tst.js:45:4:45:4 | 2 | 2 |
| tst.js:47:5:47:5 | 1 | 1 |
| tst.js:48:7:48:7 | 1 | 1 |
| tst.js:49:6:49:6 | 1 | 1 |
| tst.js:52:5:52:9 | 1_000 | 1000 |
| tst.js:53:5:53:13 | 1_000_123 | 1000123 |
| tst.js:54:5:54:17 | 1_000_000_000 | 1000000000 |
| tst.js:56:5:56:10 | 123_00 | 12300 |
| tst.js:57:5:57:10 | 12_300 | 12300 |
| tst.js:58:5:58:12 | 12345_00 | 1234500 |
| tst.js:59:5:59:12 | 123_4500 | 1234500 |
| tst.js:60:5:60:13 | 1_234_500 | 1234500 |
| tst.js:62:5:62:14 | 0xaa_bb_cc | 11189196 |
getFloatValue
| tst2.ts:1:21:1:21 | 1 | 1.0 |
| tst.js:6:1:6:1 | 1 | 1.0 |
| tst.js:11:2:11:2 | 1 | 1.0 |
| tst.js:12:2:12:2 | 0 | 0.0 |
| tst.js:26:3:26:3 | 0 | 0.0 |
| tst.js:29:6:29:6 | 0 | 0.0 |
| tst.js:35:1:35:1 | 1 | 1.0 |
| tst.js:35:5:35:5 | 2 | 2.0 |
| tst.js:35:9:35:9 | 3 | 3.0 |
| tst.js:37:2:37:2 | 1 | 1.0 |
| tst.js:39:4:39:4 | 1 | 1.0 |
| tst.js:40:1:40:1 | 1 | 1.0 |
| tst.js:42:1:42:1 | 1 | 1.0 |
| tst.js:42:4:42:4 | 2 | 2.0 |
| tst.js:42:7:42:7 | 3 | 3.0 |
| tst.js:43:4:43:4 | 2 | 2.0 |
| tst.js:43:7:43:7 | 3 | 3.0 |
| tst.js:44:1:44:1 | 1 | 1.0 |
| tst.js:44:7:44:7 | 3 | 3.0 |
| tst.js:45:1:45:1 | 1 | 1.0 |
| tst.js:45:4:45:4 | 2 | 2.0 |
| tst.js:47:5:47:5 | 1 | 1.0 |
| tst.js:48:7:48:7 | 1 | 1.0 |
| tst.js:49:6:49:6 | 1 | 1.0 |
| tst.js:52:5:52:9 | 1_000 | 1000.0 |
| tst.js:53:5:53:13 | 1_000_123 | 1000123.0 |
| tst.js:54:5:54:17 | 1_000_000_000 | 1.0E9 |
| tst.js:55:5:55:18 | 101_475_938.38 | 1.0147593838E8 |
| tst.js:56:5:56:10 | 123_00 | 12300.0 |
| tst.js:57:5:57:10 | 12_300 | 12300.0 |
| tst.js:58:5:58:12 | 12345_00 | 1234500.0 |
| tst.js:59:5:59:12 | 123_4500 | 1234500.0 |
| tst.js:60:5:60:13 | 1_234_500 | 1234500.0 |
| tst.js:61:5:61:10 | 1e1_00 | 1.0E100 |
| tst.js:62:5:62:14 | 0xaa_bb_cc | 1.1189196E7 |
getLiteralValue
| tst2.ts:1:21:1:21 | 1 | 1 |
| tst.js:1:1:1:3 | "a" | a |
| tst.js:2:1:2:3 | "b" | b |
| tst.js:2:7:2:9 | "c" | c |
| tst.js:3:1:3:3 | "d" | d |
| tst.js:3:7:3:9 | "e" | e |
| tst.js:3:13:3:15 | "f" | f |
| tst.js:6:1:6:1 | 1 | 1 |
| tst.js:8:1:8:5 | false | false |
| tst.js:9:1:9:4 | true | true |
| tst.js:11:2:11:2 | 1 | 1 |
| tst.js:12:2:12:2 | 0 | 0 |
| tst.js:14:1:14:4 | null | null |
| tst.js:20:1:20:3 | /x/ | /x/ |
| tst.js:24:5:24:7 | "x" | x |
| tst.js:26:3:26:3 | 0 | 0 |
| tst.js:29:6:29:6 | 0 | 0 |
| tst.js:35:1:35:1 | 1 | 1 |
| tst.js:35:5:35:5 | 2 | 2 |
| tst.js:35:9:35:9 | 3 | 3 |
| tst.js:37:2:37:2 | 1 | 1 |
| tst.js:39:4:39:4 | 1 | 1 |
| tst.js:40:1:40:1 | 1 | 1 |
| tst.js:42:1:42:1 | 1 | 1 |
| tst.js:42:4:42:4 | 2 | 2 |
| tst.js:42:7:42:7 | 3 | 3 |
| tst.js:43:4:43:4 | 2 | 2 |
| tst.js:43:7:43:7 | 3 | 3 |
| tst.js:44:1:44:1 | 1 | 1 |
| tst.js:44:7:44:7 | 3 | 3 |
| tst.js:45:1:45:1 | 1 | 1 |
| tst.js:45:4:45:4 | 2 | 2 |
| tst.js:47:5:47:5 | 1 | 1 |
| tst.js:48:7:48:7 | 1 | 1 |
| tst.js:49:6:49:6 | 1 | 1 |
| tst.js:52:5:52:9 | 1_000 | 1000 |
| tst.js:53:5:53:13 | 1_000_123 | 1000123 |
| tst.js:54:5:54:17 | 1_000_000_000 | 1000000000 |
| tst.js:55:5:55:18 | 101_475_938.38 | 1.0147593838E8 |
| tst.js:56:5:56:10 | 123_00 | 12300 |
| tst.js:57:5:57:10 | 12_300 | 12300 |
| tst.js:58:5:58:12 | 12345_00 | 1234500 |
| tst.js:59:5:59:12 | 123_4500 | 1234500 |
| tst.js:60:5:60:13 | 1_234_500 | 1234500 |
| tst.js:61:5:61:10 | 1e1_00 | 1.0E100 |
| tst.js:62:5:62:14 | 0xaa_bb_cc | 11189196 |
#select
| tst2.ts:1:13:1:21 | <number>1 |
| tst2.ts:1:21:1:21 | 1 |
| tst.js:1:1:1:3 | "a" |
@@ -61,3 +181,25 @@
| tst.js:48:1:48:7 | x.p = 1 |
| tst.js:48:7:48:7 | 1 |
| tst.js:49:6:49:6 | 1 |
| tst.js:52:1:52:9 | x = 1_000 |
| tst.js:52:5:52:9 | 1_000 |
| tst.js:53:1:53:13 | x = 1_000_123 |
| tst.js:53:5:53:13 | 1_000_123 |
| tst.js:54:1:54:17 | x = 1_000_000_000 |
| tst.js:54:5:54:17 | 1_000_000_000 |
| tst.js:55:1:55:18 | x = 101_475_938.38 |
| tst.js:55:5:55:18 | 101_475_938.38 |
| tst.js:56:1:56:10 | x = 123_00 |
| tst.js:56:5:56:10 | 123_00 |
| tst.js:57:1:57:10 | x = 12_300 |
| tst.js:57:5:57:10 | 12_300 |
| tst.js:58:1:58:12 | x = 12345_00 |
| tst.js:58:5:58:12 | 12345_00 |
| tst.js:59:1:59:12 | x = 123_4500 |
| tst.js:59:5:59:12 | 123_4500 |
| tst.js:60:1:60:13 | x = 1_234_500 |
| tst.js:60:5:60:13 | 1_234_500 |
| tst.js:61:1:61:10 | x = 1e1_00 |
| tst.js:61:5:61:10 | 1e1_00 |
| tst.js:62:1:62:14 | x = 0xaa_bb_cc |
| tst.js:62:5:62:14 | 0xaa_bb_cc |

View File

@@ -2,3 +2,9 @@ import javascript
from ConstantExpr c
select c
query int getIntValue(Expr e) { result = e.getIntValue() }
query float getFloatValue(NumberLiteral e) { result = e.getFloatValue() }
query string getLiteralValue(Literal lit) { result = lit.getValue() }

View File

@@ -48,3 +48,15 @@ x = 1;
x.p = 1;
x += 1;
x += x;
x = 1_000;
x = 1_000_123;
x = 1_000_000_000;
x = 101_475_938.38;
x = 123_00;
x = 12_300;
x = 12345_00;
x = 123_4500;
x = 1_234_500;
x = 1e1_00;
x = 0xaa_bb_cc;

View File

@@ -13,10 +13,11 @@
| sources.js:11:12:11:18 | key | sources.js:11:32:11:34 | key |
| sources.js:11:14:11:16 | key | sources.js:11:12:11:18 | key |
| tst2.ts:1:1:1:1 | A | tst2.ts:1:18:1:18 | A |
| tst2.ts:1:1:1:1 | A | tst2.ts:7:1:7:0 | A |
| tst2.ts:1:8:5:1 | A | tst2.ts:7:1:7:0 | A |
| tst2.ts:1:1:1:1 | A | tst2.ts:1:18:1:18 | A |
| tst2.ts:1:8:5:1 | A | tst2.ts:1:18:1:18 | A |
| tst2.ts:1:8:5:1 | A | tst2.ts:11:11:11:11 | A |
| tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:8:5:1 | A |
| tst2.ts:1:18:1:18 | A | tst2.ts:7:1:7:0 | A |
| tst2.ts:2:14:2:19 | x | tst2.ts:4:3:4:3 | x |
| tst2.ts:2:18:2:19 | 42 | tst2.ts:2:14:2:19 | x |
| tst2.ts:7:1:7:0 | A | tst2.ts:8:3:8:3 | A |
@@ -26,19 +27,19 @@
| tst2.ts:11:11:11:13 | A.x | tst2.ts:11:11:11:23 | A.x as number |
| tst2.ts:13:26:13:29 | List | tst2.ts:13:26:13:37 | List<string> |
| tst2.ts:13:39:13:38 | args | tst2.ts:13:39:13:38 | args |
| tst.js:1:1:1:1 | x | tst.js:28:2:28:1 | x |
| tst.js:1:1:1:1 | x | tst.js:32:1:32:0 | x |
| tst.js:1:1:1:1 | x | tst.js:3:5:3:5 | x |
| tst.js:1:10:1:11 | fs | tst.js:1:10:1:11 | fs |
| tst.js:1:10:1:11 | fs | tst.js:7:1:7:2 | fs |
| tst.js:1:10:1:11 | fs | tst.js:22:24:22:25 | fs |
| tst.js:3:5:3:5 | x | tst.js:28:2:28:1 | x |
| tst.js:3:5:3:5 | x | tst.js:32:1:32:0 | x |
| tst.js:3:5:3:10 | x | tst.js:3:5:3:5 | x |
| tst.js:3:5:3:10 | x | tst.js:8:1:8:1 | x |
| tst.js:3:5:3:10 | x | tst.js:9:2:9:2 | x |
| tst.js:3:5:3:10 | x | tst.js:10:1:10:1 | x |
| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x |
| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x |
| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x |
| tst.js:3:5:3:10 | x | tst.js:28:2:28:1 | x |
| tst.js:3:5:3:10 | x | tst.js:32:1:32:0 | x |
| tst.js:3:9:3:10 | 42 | tst.js:3:5:3:10 | x |
| tst.js:4:5:4:12 | y | tst.js:10:4:10:4 | y |
| tst.js:4:5:4:12 | y | tst.js:11:6:11:6 | y |
@@ -75,9 +76,8 @@
| tst.js:22:5:22:25 | readFileSync | tst.js:23:1:23:12 | readFileSync |
| tst.js:22:7:22:18 | readFileSync | tst.js:22:5:22:25 | readFileSync |
| tst.js:22:24:22:25 | fs | tst.js:22:5:22:20 | { readFileSync } |
| tst.js:25:1:25:3 | x | tst.js:3:5:3:5 | x |
| tst.js:25:1:25:3 | x | tst.js:26:1:26:1 | x |
| tst.js:25:1:25:3 | x | tst.js:28:2:28:1 | x |
| tst.js:25:1:25:3 | x | tst.js:32:1:32:0 | x |
| tst.js:25:1:25:3 | x | tst.js:57:7:57:7 | x |
| tst.js:25:1:25:3 | x | tst.js:58:11:58:11 | x |
| tst.js:25:1:25:3 | x | tst.js:105:1:105:1 | x |

View File

@@ -6,3 +6,8 @@ function f() {
if (two > one) {} // NOT OK - always true
if (two <= one) {} // NOT OK - always false
}
function underscores(x) {
if (x >= 1_000_000) return; // OK
if (x >= 1_000) return; // OK
}

View File

@@ -0,0 +1 @@
| Success |

View File

@@ -0,0 +1,16 @@
/**
* Test that fails to compile if the domain of `SourceNode` depends on `SourceNode.flowsTo` (recursively).
*
* This tests adds a negative dependency `flowsTo --!--> SourceNode`
* so that the undesired edge `SourceNode --> flowsTo` completes a negative cycle.
*/
import javascript
class BadSourceNode extends DataFlow::SourceNode {
BadSourceNode() { this.(DataFlow::PropRead).getPropertyName() = "foo" }
override predicate flowsTo(DataFlow::Node node) { not node instanceof DataFlow::SourceNode }
}
select "Success"

View File

@@ -0,0 +1,2 @@
// The contents of this file don't matter
let x = 1;

View File

@@ -1,2 +1,2 @@
| tst.js:4:3:4:27 | (typeof ... nction' | x |
| tst.js:8:3:8:23 | (typeof ... === 'u' | x |
| tst.js:4:3:4:27 | (typeof ... nction' | tst.js:3:12:3:12 | x |
| tst.js:8:3:8:23 | (typeof ... === 'u' | tst.js:3:12:3:12 | x |

View File

@@ -1,14 +1,14 @@
| tst.js:2:7:2:13 | a = g() | a | tst.js:2:11:2:13 | g() |
| tst.js:4:7:4:24 | { propB: b } = g() | b | tst.js:4:9:4:16 | propB: b |
| tst.js:6:7:6:34 | { propC ... } = g() | c | tst.js:6:9:6:16 | propC: c |
| tst.js:6:7:6:34 | { propC ... } = g() | d | tst.js:6:19:6:26 | propD: d |
| tst.js:8:7:8:41 | { array ... } = g() | elm1 | tst.js:8:22:8:25 | elm1 |
| tst.js:8:7:8:41 | { array ... } = g() | elm2 | tst.js:8:28:8:31 | elm2 |
| tst.js:17:3:17:22 | ({ propB: b }) = g() | b | tst.js:17:6:17:13 | propB: b |
| tst.js:19:3:19:32 | ({ prop ... ) = g() | c | tst.js:19:6:19:13 | propC: c |
| tst.js:19:3:19:32 | ({ prop ... ) = g() | d | tst.js:19:16:19:23 | propD: d |
| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | elm1 | tst.js:21:5:21:8 | elm1 |
| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | elm2 | tst.js:21:11:21:14 | elm2 |
| tst.js:31:12:31:23 | [elm1, elm2] | elm1 | tst.js:31:13:31:16 | elm1 |
| tst.js:31:12:31:23 | [elm1, elm2] | elm2 | tst.js:31:19:31:22 | elm2 |
| tst.js:31:26:31:40 | { prop: value } | value | tst.js:31:28:31:38 | prop: value |
| tst.js:2:7:2:13 | a = g() | tst.js:2:7:2:7 | a | tst.js:2:11:2:13 | g() |
| tst.js:4:7:4:24 | { propB: b } = g() | tst.js:4:16:4:16 | b | tst.js:4:9:4:16 | propB: b |
| tst.js:6:7:6:34 | { propC ... } = g() | tst.js:6:16:6:16 | c | tst.js:6:9:6:16 | propC: c |
| tst.js:6:7:6:34 | { propC ... } = g() | tst.js:6:26:6:26 | d | tst.js:6:19:6:26 | propD: d |
| tst.js:8:7:8:41 | { array ... } = g() | tst.js:8:22:8:25 | elm1 | tst.js:8:22:8:25 | elm1 |
| tst.js:8:7:8:41 | { array ... } = g() | tst.js:8:28:8:31 | elm2 | tst.js:8:28:8:31 | elm2 |
| tst.js:17:3:17:22 | ({ propB: b }) = g() | tst.js:4:16:4:16 | b | tst.js:17:6:17:13 | propB: b |
| tst.js:19:3:19:32 | ({ prop ... ) = g() | tst.js:6:16:6:16 | c | tst.js:19:6:19:13 | propC: c |
| tst.js:19:3:19:32 | ({ prop ... ) = g() | tst.js:6:26:6:26 | d | tst.js:19:16:19:23 | propD: d |
| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | tst.js:8:22:8:25 | elm1 | tst.js:21:5:21:8 | elm1 |
| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | tst.js:8:28:8:31 | elm2 | tst.js:21:11:21:14 | elm2 |
| tst.js:31:12:31:23 | [elm1, elm2] | tst.js:31:13:31:16 | elm1 | tst.js:31:13:31:16 | elm1 |
| tst.js:31:12:31:23 | [elm1, elm2] | tst.js:31:19:31:22 | elm2 | tst.js:31:19:31:22 | elm2 |
| tst.js:31:26:31:40 | { prop: value } | tst.js:31:34:31:38 | value | tst.js:31:28:31:38 | prop: value |

View File

@@ -1,12 +1,12 @@
| cm1 |
| cm2 |
| cm3 |
| cm4 |
| cm5 |
| cm6 |
| cm7 |
| cm8 |
| dm1 |
| m |
| mcm1 |
| rm1 |
| module-refs.js:3:9:3:11 | dm1 |
| module-refs.js:6:9:6:11 | rm1 |
| module-refs.js:9:9:9:11 | cm1 |
| module-refs.js:10:9:10:11 | cm2 |
| module-refs.js:11:9:11:11 | cm3 |
| module-refs.js:12:9:12:11 | cm4 |
| module-refs.js:13:9:13:11 | cm5 |
| module-refs.js:14:9:14:11 | cm6 |
| module-refs.js:15:9:15:11 | cm7 |
| module-refs.js:16:9:16:11 | cm8 |
| module-refs.js:22:9:22:12 | mcm1 |
| tst.js:19:7:19:7 | m |

View File

@@ -1,46 +1,46 @@
| arguments | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| arguments | assignments.js:3:1:6:1 | functio ... = 56;\\n} |
| arguments | assignments.js:4:10:4:24 | function h() {} |
| arguments | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| arguments | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| arguments | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| arguments | for.js:1:2:5:1 | functio ... x;\\n} |
| arguments | let.js:14:1:21:1 | functio ... }\\n} |
| arguments | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| arguments | typeoftype.ts:3:3:5:3 | functio ... e x\\n } |
| arguments | variables.js:8:1:12:1 | functio ... ar x;\\n} |
| arguments | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| arguments | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |
| f | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| g | assignments.js:3:1:6:1 | functio ... = 56;\\n} |
| g | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| g | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| h | assignments.js:4:10:4:24 | function h() {} |
| h | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| o | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| o | for.js:1:2:5:1 | functio ... x;\\n} |
| x | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| x | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| x | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| x | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| x | for.js:1:2:5:1 | functio ... x;\\n} |
| x | legacyletstmt.js:1:1:8:0 | <toplevel> |
| x | let.js:1:1:22:0 | <toplevel> |
| x | let.js:1:1:22:0 | <toplevel> |
| x | let.js:1:1:22:0 | <toplevel> |
| x | let.js:1:1:22:0 | <toplevel> |
| x | let.js:1:1:22:0 | <toplevel> |
| x | let.js:14:1:21:1 | functio ... }\\n} |
| x | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| x | variables.js:8:1:12:1 | functio ... ar x;\\n} |
| x | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| y | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| y | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| y | legacyletstmt.js:1:1:8:0 | <toplevel> |
| y | let.js:1:1:22:0 | <toplevel> |
| y | let.js:14:1:21:1 | functio ... }\\n} |
| y | typeoftype.ts:3:3:5:3 | functio ... e x\\n } |
| y | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| y | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |
| z | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| z | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |
| arrayPatternDefault.js:1:2:1:1 | arguments | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| arrayPatternDefault.js:1:11:1:11 | o | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| arrayPatternDefault.js:2:8:2:8 | x | arrayPatternDefault.js:1:2:4:1 | functio ... bal2;\\n} |
| assignments.js:3:1:3:0 | arguments | assignments.js:3:1:6:1 | functio ... = 56;\\n} |
| assignments.js:4:6:4:6 | g | assignments.js:3:1:6:1 | functio ... = 56;\\n} |
| assignments.js:4:10:4:9 | arguments | assignments.js:4:10:4:24 | function h() {} |
| assignments.js:4:19:4:19 | h | assignments.js:4:10:4:24 | function h() {} |
| defaultargs.js:2:7:2:7 | x | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| defaultargs.js:2:10:2:18 | arguments | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| defaultargs.js:3:3:3:2 | arguments | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| defaultargs.js:3:12:3:12 | f | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| defaultargs.js:3:14:3:14 | x | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| defaultargs.js:3:17:3:17 | y | defaultargs.js:3:3:3:25 | functio ... = x) {} |
| defaultargs.js:4:3:4:2 | arguments | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| defaultargs.js:4:12:4:12 | g | defaultargs.js:1:2:5:1 | functio ... ]) {}\\n} |
| defaultargs.js:4:14:4:14 | x | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| defaultargs.js:4:32:4:32 | y | defaultargs.js:4:3:4:51 | functio ... [0]) {} |
| for.js:1:2:1:1 | arguments | for.js:1:2:5:1 | functio ... x;\\n} |
| for.js:1:11:1:11 | o | for.js:1:2:5:1 | functio ... x;\\n} |
| for.js:2:7:2:7 | x | for.js:1:2:5:1 | functio ... x;\\n} |
| legacyletstmt.js:3:6:3:6 | x | legacyletstmt.js:1:1:8:0 | <toplevel> |
| legacyletstmt.js:3:14:3:14 | y | legacyletstmt.js:1:1:8:0 | <toplevel> |
| let.js:2:9:2:9 | x | let.js:1:1:22:0 | <toplevel> |
| let.js:4:13:4:13 | x | let.js:1:1:22:0 | <toplevel> |
| let.js:5:18:5:18 | x | let.js:1:1:22:0 | <toplevel> |
| let.js:5:26:5:26 | y | let.js:1:1:22:0 | <toplevel> |
| let.js:6:17:6:17 | x | let.js:1:1:22:0 | <toplevel> |
| let.js:9:18:9:18 | x | let.js:1:1:22:0 | <toplevel> |
| let.js:14:1:14:0 | arguments | let.js:14:1:21:1 | functio ... }\\n} |
| let.js:14:14:14:14 | x | let.js:14:1:21:1 | functio ... }\\n} |
| let.js:17:11:17:11 | y | let.js:14:1:21:1 | functio ... }\\n} |
| typeoftype.ts:1:1:1:0 | arguments | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| typeoftype.ts:2:7:2:7 | x | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| typeoftype.ts:3:3:3:2 | arguments | typeoftype.ts:3:3:5:3 | functio ... e x\\n } |
| typeoftype.ts:3:12:3:12 | g | typeoftype.ts:1:1:6:1 | functio ... x\\n }\\n} |
| typeoftype.ts:4:9:4:9 | y | typeoftype.ts:3:3:5:3 | functio ... e x\\n } |
| variables.js:8:1:8:0 | arguments | variables.js:8:1:12:1 | functio ... ar x;\\n} |
| variables.js:9:6:9:6 | x | variables.js:8:1:12:1 | functio ... ar x;\\n} |
| variables.js:13:1:13:0 | arguments | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| variables.js:13:12:13:12 | y | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| variables.js:13:15:13:15 | z | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| variables.js:15:6:15:6 | x | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| variables.js:16:2:16:1 | arguments | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |
| variables.js:16:11:16:11 | h | variables.js:13:1:23:1 | functio ... z;\\n\\t}\\n} |
| variables.js:16:13:16:13 | z | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |
| variables.js:18:11:18:11 | y | variables.js:16:2:22:2 | functio ... y+z;\\n\\t} |