From 3fd06b02b695df0f9314d2cf7d95d969e361cf4b Mon Sep 17 00:00:00 2001 From: Sid Shankar Date: Mon, 19 Aug 2024 20:32:40 +0000 Subject: [PATCH] Parses arbitrary import / export specifiers --- .../ts/extractor/TypeScriptASTConverter.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java index 2fc9474d298..23583a0c4e3 100644 --- a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java +++ b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java @@ -1215,10 +1215,18 @@ public class TypeScriptASTConverter { } private Node convertExportSpecifier(JsonObject node, SourceLocation loc) throws ParseError { + boolean hasExported = hasChild(node, "propertyName"); + System.out.println("String representation of node: " + node.toString()); + Identifier local = convertChild(node, hasExported ? "propertyName" : "name"); + + JsonObject exportedToken = node.get("name").getAsJsonObject(); + Identifier exported = convertNodeAsIdentifier(exportedToken); + + // Identifier exported = convertChild(node, "name"); return new ExportSpecifier( loc, - convertChild(node, hasChild(node, "propertyName") ? "propertyName" : "name"), - convertChild(node, "name")); + local, + exported); } private Node convertNamespaceExport(JsonObject node, SourceLocation loc) throws ParseError { @@ -1431,7 +1439,8 @@ public class TypeScriptASTConverter { private Node convertImportSpecifier(JsonObject node, SourceLocation loc) throws ParseError { boolean hasImported = hasChild(node, "propertyName"); - Identifier imported = convertChild(node, hasImported ? "propertyName" : "name"); + JsonObject importedToken = node.get(hasImported? "propertyName" : "name").getAsJsonObject(); + Identifier imported = convertNodeAsIdentifier(importedToken); Identifier local = convertChild(node, "name"); boolean isTypeOnly = node.get("isTypeOnly").getAsBoolean() == true; return new ImportSpecifier(loc, imported, local, isTypeOnly);