From 4babba157f762a0b197f5736c47157adb053b567 Mon Sep 17 00:00:00 2001 From: joeduffy Date: Fri, 20 Jan 2017 12:06:08 -0800 Subject: [PATCH] Use module tokens in the import list --- tools/mujs/lib/compiler/transform.ts | 17 +++++++++-------- .../tests/output/modules/export/Mu.out.json | 4 ++-- .../tests/output/modules/reexport/Mu.out.json | 6 +++--- .../output/modules/reexport_all/Mu.out.json | 6 +++--- .../output/modules/reexport_rename/Mu.out.json | 6 +++--- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/tools/mujs/lib/compiler/transform.ts b/tools/mujs/lib/compiler/transform.ts index a4c64d89f..4735ae324 100644 --- a/tools/mujs/lib/compiler/transform.ts +++ b/tools/mujs/lib/compiler/transform.ts @@ -163,7 +163,7 @@ export class Transformer { private currentSourceFile: ts.SourceFile | undefined; private currentModuleMembers: ast.ModuleMembers | undefined; private currentModuleImports: Map; - private currentModuleImportsList: ModuleReference[]; + private currentModuleImportTokens: symbols.ModuleToken[]; constructor(meta: pack.Metadata, script: Script) { contract.requires(!!script.tree, "script", "A valid MuJS AST is required to lower to MuPack/MuIL"); @@ -454,12 +454,12 @@ export class Transformer { let priorSourceFile: ts.SourceFile | undefined = this.currentSourceFile; let priorModuleMembers: ast.ModuleMembers | undefined = this.currentModuleMembers; let priorModuleImports: Map | undefined = this.currentModuleImports; - let priorModuleImportsList: ModuleReference[] | undefined = this.currentModuleImportsList; + let priorModuleImportsList: ModuleReference[] | undefined = this.currentModuleImportTokens; try { this.currentSourceFile = node; this.currentModuleMembers = {}; this.currentModuleImports = new Map(); - this.currentModuleImportsList = []; // to track the imports, in order. + this.currentModuleImportTokens = []; // to track the imports, in order. // Any top-level non-definition statements will pile up into the module initializer. let statements: ast.Statement[] = []; @@ -513,7 +513,7 @@ export class Transformer { return this.withLocation(node, { kind: ast.moduleKind, name: ident(modtok), - imports: this.currentModuleImportsList, + imports: this.currentModuleImportTokens, members: this.currentModuleMembers, }); } @@ -521,7 +521,7 @@ export class Transformer { this.currentSourceFile = priorSourceFile; this.currentModuleMembers = priorModuleMembers; this.currentModuleImports = priorModuleImports; - this.currentModuleImportsList = priorModuleImportsList; + this.currentModuleImportTokens = priorModuleImportsList; } } @@ -632,7 +632,7 @@ export class Transformer { else { contract.assert(!!this.currentModuleMembers); contract.assert(!!this.currentModuleImports); - contract.assert(!!this.currentModuleImportsList); + contract.assert(!!this.currentModuleImportTokens); // First look for a module member, for reexporting classes, interfaces, and variables. let member: ast.ModuleMember | undefined = this.currentModuleMembers![name.ident]; if (member) { @@ -688,6 +688,7 @@ export class Transformer { contract.assert(node.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral); let importModule: ModuleReference = this.resolveModuleReferenceByName((node.moduleSpecifier).text); + let importModuleToken: symbols.ModuleToken = this.createModuleToken(importModule); // Figure out what kind of import statement this is (there are many, see below). let name: ts.Identifier | undefined; @@ -713,7 +714,7 @@ export class Transformer { let importName: ast.Identifier = this.transformIdentifier(name); log.out(5).info(`Detected bulk import ${importName.ident}=${importModule}`); this.currentModuleImports.set(importName.ident, importModule); - this.currentModuleImportsList.push(importModule); + this.currentModuleImportTokens.push(importModuleToken); } else if (namedImports) { // This is an import of the form @@ -735,9 +736,9 @@ export class Transformer { memberName = member.ident; } this.currentModuleImports.set(memberName, memberToken); - this.currentModuleImportsList.push(memberToken); log.out(5).info(`Detected named import ${memberToken} as ${memberName} from ${importModule}`); } + this.currentModuleImportTokens.push(importModuleToken); } } return { kind: ast.emptyStatementKind }; diff --git a/tools/mujs/tests/output/modules/export/Mu.out.json b/tools/mujs/tests/output/modules/export/Mu.out.json index 8c2e64898..3fb3635f5 100644 --- a/tools/mujs/tests/output/modules/export/Mu.out.json +++ b/tools/mujs/tests/output/modules/export/Mu.out.json @@ -189,7 +189,7 @@ "ident": "index" }, "imports": [ - "/Users/joeduffy/dev/code/src/github.com/marapongo/mu/tools/mujs/tests/output/modules/export/other" + "other" ], "members": { "other": { @@ -210,7 +210,7 @@ } }, "access": "public", - "token": "other" + "referent": "other" }, "C": { "kind": "Class", diff --git a/tools/mujs/tests/output/modules/reexport/Mu.out.json b/tools/mujs/tests/output/modules/reexport/Mu.out.json index 6cc654c74..e31dc60d8 100644 --- a/tools/mujs/tests/output/modules/reexport/Mu.out.json +++ b/tools/mujs/tests/output/modules/reexport/Mu.out.json @@ -208,7 +208,7 @@ } }, "access": "public", - "token": "other:C" + "referent": "other:C" }, "I": { "kind": "Export", @@ -228,7 +228,7 @@ } }, "access": "public", - "token": "other:I" + "referent": "other:I" }, "v": { "kind": "Export", @@ -248,7 +248,7 @@ } }, "access": "public", - "token": "other:v" + "referent": "other:v" } }, "loc": { diff --git a/tools/mujs/tests/output/modules/reexport_all/Mu.out.json b/tools/mujs/tests/output/modules/reexport_all/Mu.out.json index b5258b225..ba027cf5c 100644 --- a/tools/mujs/tests/output/modules/reexport_all/Mu.out.json +++ b/tools/mujs/tests/output/modules/reexport_all/Mu.out.json @@ -197,7 +197,7 @@ "ident": "C" }, "access": "public", - "token": "other:C" + "referent": "other:C" }, "I": { "kind": "Export", @@ -206,7 +206,7 @@ "ident": "I" }, "access": "public", - "token": "other:I" + "referent": "other:I" }, "v": { "kind": "Export", @@ -215,7 +215,7 @@ "ident": "v" }, "access": "public", - "token": "other:v" + "referent": "other:v" } }, "loc": { diff --git a/tools/mujs/tests/output/modules/reexport_rename/Mu.out.json b/tools/mujs/tests/output/modules/reexport_rename/Mu.out.json index c4404b1b3..9611ed126 100644 --- a/tools/mujs/tests/output/modules/reexport_rename/Mu.out.json +++ b/tools/mujs/tests/output/modules/reexport_rename/Mu.out.json @@ -208,7 +208,7 @@ } }, "access": "public", - "token": "other:C" + "referent": "other:C" }, "J": { "kind": "Export", @@ -228,7 +228,7 @@ } }, "access": "public", - "token": "other:I" + "referent": "other:I" }, "w": { "kind": "Export", @@ -248,7 +248,7 @@ } }, "access": "public", - "token": "other:v" + "referent": "other:v" } }, "loc": {