From 5d2897d67f8d9586a1c233d95df7cc298e2529d3 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 13 Apr 2015 13:00:00 -0700 Subject: [PATCH] export imported aliases --- src/compiler/emitter.ts | 24 ++++++++++++++ .../reference/systemModule10.errors.txt | 18 +++++++++++ tests/baselines/reference/systemModule10.js | 32 +++++++++++++++++++ tests/cases/compiler/systemModule10.ts | 11 +++++++ 4 files changed, 85 insertions(+) create mode 100644 tests/baselines/reference/systemModule10.errors.txt create mode 100644 tests/baselines/reference/systemModule10.js create mode 100644 tests/cases/compiler/systemModule10.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 2d028f058f4..98074d26493 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -5026,6 +5026,30 @@ var __param = this.__param || function(index, decorator) { return function (targ writeLocalNameForExternalImport(importNode); write(` = ${setterParameterName}`); writeLine(); + + let defaultName = + importNode.kind === SyntaxKind.ImportDeclaration + ? (importNode).importClause.name + : (importNode).name; + if (defaultName) { + emitExportMemberAssignments(defaultName); + writeLine(); + } + + if (importNode.kind === SyntaxKind.ImportDeclaration && (importNode).importClause.namedBindings) { + if ((importNode).importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + emitExportMemberAssignments(((importNode).importClause.namedBindings).name); + writeLine(); + } + else { + for (let element of ((importNode).importClause.namedBindings).elements) { + emitExportMemberAssignments(element.name || element.propertyName); + writeLine() + } + } + } + + decreaseIndent(); break; case SyntaxKind.ExportDeclaration: diff --git a/tests/baselines/reference/systemModule10.errors.txt b/tests/baselines/reference/systemModule10.errors.txt new file mode 100644 index 00000000000..9be815836aa --- /dev/null +++ b/tests/baselines/reference/systemModule10.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/systemModule10.ts(2,20): error TS2307: Cannot find external module 'file1'. +tests/cases/compiler/systemModule10.ts(3,21): error TS2307: Cannot find external module 'file2'. + + +==== tests/cases/compiler/systemModule10.ts (2 errors) ==== + + import n, {x} from 'file1' + ~~~~~~~ +!!! error TS2307: Cannot find external module 'file1'. + import n2 = require('file2'); + ~~~~~~~ +!!! error TS2307: Cannot find external module 'file2'. + export {x} + export {x as y} + export {n} + export {n as n1} + export {n2} + export {n2 as n3} \ No newline at end of file diff --git a/tests/baselines/reference/systemModule10.js b/tests/baselines/reference/systemModule10.js new file mode 100644 index 00000000000..c5c95e05f9b --- /dev/null +++ b/tests/baselines/reference/systemModule10.js @@ -0,0 +1,32 @@ +//// [systemModule10.ts] + +import n, {x} from 'file1' +import n2 = require('file2'); +export {x} +export {x as y} +export {n} +export {n as n1} +export {n2} +export {n2 as n3} + +//// [systemModule10.js] +System.register(['file1', 'file2'], function(exports_1) { + var file1_1, n2; + return { + setters:[ + function (v_1) { + file1_1 = v_1 + exports_1("n", file1_1.default); + exports_1("n1", file1_1.default); + exports_1("x", file1_1.x); + exports_1("y", file1_1.x); + }, + function (v_1) { + n2 = v_1 + exports_1("n2", n2); + exports_1("n3", n2); + }], + execute: function() { + } + } +}); diff --git a/tests/cases/compiler/systemModule10.ts b/tests/cases/compiler/systemModule10.ts new file mode 100644 index 00000000000..49e99fb1c63 --- /dev/null +++ b/tests/cases/compiler/systemModule10.ts @@ -0,0 +1,11 @@ +// @module: system +// @separateCompilation: true + +import n, {x} from 'file1' +import n2 = require('file2'); +export {x} +export {x as y} +export {n} +export {n as n1} +export {n2} +export {n2 as n3} \ No newline at end of file