Skip to content

Commit 138b000

Browse files
committed
JS: Coerce the local export node to an Identifier
1 parent db98880 commit 138b000

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,8 @@ private Node convertExportDeclaration(JsonObject node, SourceLocation loc) throw
12171217
}
12181218

12191219
private Node convertExportSpecifier(JsonObject node, SourceLocation loc) throws ParseError {
1220-
Identifier local = convertChild(node, hasChild(node, "propertyName") ? "propertyName" : "name");
1220+
JsonObject localToken = node.get(hasChild(node, "propertyName") ? "propertyName" : "name").getAsJsonObject();
1221+
Identifier local = convertNodeAsIdentifier(localToken);
12211222
JsonObject exportedToken = node.get("name").getAsJsonObject();
12221223
Identifier exported = convertNodeAsIdentifier(exportedToken);
12231224

javascript/ql/test/library-tests/Modules/tests.expected

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ test_ExportDeclarations
55
| a.js:5:1:5:32 | export ... } = o; |
66
| arbitrarySpecifier.ts:5:1:5:32 | export ... :new" } |
77
| arbitrarySpecifier.ts:6:1:6:41 | export ... './mod' |
8+
| arbitrarySpecifier.ts:8:1:8:43 | export ... where"; |
89
| b.js:5:1:5:18 | export { f as g }; |
910
| b.js:7:1:7:21 | export ... './a'; |
1011
| d.js:4:1:4:20 | export * from 'm/c'; |
@@ -22,6 +23,7 @@ test_ExportDefaultDeclarations
2223
| es2015_require.js:3:1:3:25 | export ... ss C {} |
2324
test_ExportSpecifiers
2425
| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | arbitrarySpecifier.ts:5:10:5:16 | Foo_new | arbitrarySpecifier.ts:5:21:5:30 | "Foo::new" |
26+
| arbitrarySpecifier.ts:8:10:8:23 | "<X>" as "<Y>" | arbitrarySpecifier.ts:8:10:8:14 | "<X>" | arbitrarySpecifier.ts:8:19:8:23 | "<Y>" |
2527
| b.js:5:10:5:15 | f as g | b.js:5:10:5:10 | f | b.js:5:15:5:15 | g |
2628
| e.js:2:10:2:10 | x | e.js:2:10:2:10 | x | e.js:2:10:2:10 | x |
2729
| e.js:2:13:2:13 | y | e.js:2:13:2:13 | y | e.js:2:13:2:13 | y |
@@ -81,8 +83,8 @@ test_Module_exports
8183
| a.js:1:1:5:32 | <toplevel> | default | a.js:1:16:3:1 | functio ... n 23;\\n} |
8284
| a.js:1:1:5:32 | <toplevel> | x | a.js:5:18:5:20 | f() |
8385
| a.js:1:1:5:32 | <toplevel> | y | a.js:5:25:5:25 | y |
84-
| arbitrarySpecifier.ts:1:1:6:41 | <toplevel> | Foo::new | arbitrarySpecifier.ts:5:10:5:16 | Foo_new |
85-
| arbitrarySpecifier.ts:1:1:6:41 | <toplevel> | Foo_types | arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" |
86+
| arbitrarySpecifier.ts:1:1:9:0 | <toplevel> | Foo::new | arbitrarySpecifier.ts:5:10:5:16 | Foo_new |
87+
| arbitrarySpecifier.ts:1:1:9:0 | <toplevel> | Foo_types | arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" |
8688
| b.js:1:1:8:0 | <toplevel> | f2 | a.js:1:16:3:1 | functio ... n 23;\\n} |
8789
| b.js:1:1:8:0 | <toplevel> | g | b.js:5:10:5:10 | f |
8890
| e.js:1:1:4:0 | <toplevel> | g | a.js:1:16:3:1 | functio ... n 23;\\n} |
@@ -109,6 +111,7 @@ test_OtherImports
109111
| import-indirect-path.js:5:1:5:14 | require(x + y) | a.js:1:1:5:32 | <toplevel> |
110112
test_ReExportDeclarations
111113
| arbitrarySpecifier.ts:6:1:6:41 | export ... './mod' | arbitrarySpecifier.ts:6:35:6:41 | './mod' |
114+
| arbitrarySpecifier.ts:8:1:8:43 | export ... where"; | arbitrarySpecifier.ts:8:32:8:42 | "somewhere" |
112115
| b.js:7:1:7:21 | export ... './a'; | b.js:7:16:7:20 | './a' |
113116
| d.js:4:1:4:20 | export * from 'm/c'; | d.js:4:15:4:19 | 'm/c' |
114117
| e.js:3:1:3:35 | export ... './a'; | e.js:3:30:3:34 | './a' |
@@ -128,6 +131,7 @@ test_getAnImportedModule
128131
test_getExportedName
129132
| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | Foo::new |
130133
| arbitrarySpecifier.ts:6:13:6:28 | * as "Foo_types" | Foo_types |
134+
| arbitrarySpecifier.ts:8:10:8:23 | "<X>" as "<Y>" | <Y> |
131135
| b.js:5:10:5:15 | f as g | g |
132136
| b.js:7:8:7:9 | f2 | f2 |
133137
| e.js:2:10:2:10 | x | x |
@@ -152,6 +156,7 @@ test_getImportedName
152156
| unresolved.js:1:8:1:8 | f | default |
153157
test_getLocalName
154158
| arbitrarySpecifier.ts:5:10:5:30 | Foo_new ... o::new" | Foo_new |
159+
| arbitrarySpecifier.ts:8:10:8:23 | "<X>" as "<Y>" | <X> |
155160
| b.js:5:10:5:15 | f as g | f |
156161
| b.js:7:8:7:9 | f2 | default |
157162
| e.js:2:10:2:10 | x | x |

0 commit comments

Comments
 (0)