diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 2cced08c60a..1b939980e9a 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3487,6 +3487,9 @@ module ts { if (!(node.flags & NodeFlags.Export) || isES6ExportedDeclaration(node)) { emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); emitEnd(node); @@ -3512,10 +3515,7 @@ module ts { emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (isES6ExportedDeclaration(node)) { - emitES6NamedExportForDeclaration(node); - } - else if (node.flags & NodeFlags.Export) { + if (!isES6ExportedDeclaration(node) && node.flags & NodeFlags.Export) { writeLine(); emitStart(node); write("var "); @@ -3580,6 +3580,9 @@ module ts { } emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); write(";"); @@ -3628,23 +3631,11 @@ module ts { emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (isES6ExportedDeclaration(node)) { - emitES6NamedExportForDeclaration(node); - } - else if (languageVersion < ScriptTarget.ES6 && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) { + if (!isES6ExportedDeclaration(node) && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) { emitExportMemberAssignments(node.name); } } - function emitES6NamedExportForDeclaration(node: Declaration) { - writeLine(); - emitStart(node); - write("export { "); - emit(node.name); - write(" };"); - emitEnd(node); - } - function emitRequire(moduleName: Expression) { if (moduleName.kind === SyntaxKind.StringLiteral) { write("require("); diff --git a/tests/baselines/reference/es6ExportAll.js b/tests/baselines/reference/es6ExportAll.js index 05c8a794e91..afa07c39d8f 100644 --- a/tests/baselines/reference/es6ExportAll.js +++ b/tests/baselines/reference/es6ExportAll.js @@ -19,11 +19,10 @@ export * from "server"; //// [server.js] export class c { } -var m; +export var m; (function (m) { m.x = 10; })(m || (m = {})); -export { m }; export var x = 10; //// [client.js] export * from "server"; diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js index c8528895462..ccdd32d99c0 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js @@ -23,11 +23,10 @@ export { x } from "server"; //// [server.js] export class c { } -var m; +export var m; (function (m) { m.x = 10; })(m || (m = {})); -export { m }; export var x = 10; //// [client.js] export { c } from "server"; diff --git a/tests/baselines/reference/es6ModuleClassDeclaration.js b/tests/baselines/reference/es6ModuleClassDeclaration.js index 9676720fd0f..a228739abbf 100644 --- a/tests/baselines/reference/es6ModuleClassDeclaration.js +++ b/tests/baselines/reference/es6ModuleClassDeclaration.js @@ -147,7 +147,7 @@ c2.k = 20; c2.l = 30; new c(); new c2(); -var m1; +export var m1; (function (m1) { class c3 { constructor() { @@ -187,7 +187,6 @@ var m1; new c3(); new c4(); })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { class c3 { diff --git a/tests/baselines/reference/es6ModuleConst.js b/tests/baselines/reference/es6ModuleConst.js index 2a11ec638a1..117bf0fb4d0 100644 --- a/tests/baselines/reference/es6ModuleConst.js +++ b/tests/baselines/reference/es6ModuleConst.js @@ -21,14 +21,13 @@ export const a = "hello"; export const x = a, y = x; const b = y; const c = b, d = c; -var m1; +export var m1; (function (m1) { m1.k = a; m1.l = b, m1.m = m1.k; const n = m1.k; const o = n, p = m1.k; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { m2.k = a; diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration.js b/tests/baselines/reference/es6ModuleConstEnumDeclaration.js index c8096c76c8e..1900db57b60 100644 --- a/tests/baselines/reference/es6ModuleConstEnumDeclaration.js +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration.js @@ -48,14 +48,13 @@ module m2 { //// [es6ModuleConstEnumDeclaration.js] var x = 0 /* a */; var y = 0 /* x */; -var m1; +export var m1; (function (m1) { var x1 = 0 /* a */; var y1 = 0 /* x */; var x2 = 0 /* a */; var y2 = 0 /* x */; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { var x1 = 0 /* a */; diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js index 5ec953aca88..539ec121b6b 100644 --- a/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js @@ -47,13 +47,12 @@ module m2 { } //// [es6ModuleConstEnumDeclaration2.js] -var e1; +export var e1; (function (e1) { e1[e1["a"] = 0] = "a"; e1[e1["b"] = 1] = "b"; e1[e1["c"] = 2] = "c"; })(e1 || (e1 = {})); -export { e1 }; var e2; (function (e2) { e2[e2["x"] = 0] = "x"; @@ -62,7 +61,7 @@ var e2; })(e2 || (e2 = {})); var x = 0 /* a */; var y = 0 /* x */; -var m1; +export var m1; (function (m1) { (function (e3) { e3[e3["a"] = 0] = "a"; @@ -81,7 +80,6 @@ var m1; var x2 = 0 /* a */; var y2 = 0 /* x */; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { (function (e5) { diff --git a/tests/baselines/reference/es6ModuleEnumDeclaration.js b/tests/baselines/reference/es6ModuleEnumDeclaration.js index 08792149818..30c382a4508 100644 --- a/tests/baselines/reference/es6ModuleEnumDeclaration.js +++ b/tests/baselines/reference/es6ModuleEnumDeclaration.js @@ -46,13 +46,12 @@ module m2 { } //// [es6ModuleEnumDeclaration.js] -var e1; +export var e1; (function (e1) { e1[e1["a"] = 0] = "a"; e1[e1["b"] = 1] = "b"; e1[e1["c"] = 2] = "c"; })(e1 || (e1 = {})); -export { e1 }; var e2; (function (e2) { e2[e2["x"] = 0] = "x"; @@ -61,7 +60,7 @@ var e2; })(e2 || (e2 = {})); var x = e1.a; var y = e2.x; -var m1; +export var m1; (function (m1) { (function (e3) { e3[e3["a"] = 0] = "a"; @@ -80,7 +79,6 @@ var m1; var x2 = e3.a; var y2 = e4.x; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { (function (e5) { diff --git a/tests/baselines/reference/es6ModuleFunctionDeclaration.js b/tests/baselines/reference/es6ModuleFunctionDeclaration.js index 4c1fc33647c..1305d0a4e19 100644 --- a/tests/baselines/reference/es6ModuleFunctionDeclaration.js +++ b/tests/baselines/reference/es6ModuleFunctionDeclaration.js @@ -35,7 +35,7 @@ function foo2() { } foo(); foo2(); -var m1; +export var m1; (function (m1) { function foo3() { } @@ -47,7 +47,6 @@ var m1; foo3(); foo4(); })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { function foo3() { diff --git a/tests/baselines/reference/es6ModuleInternalImport.js b/tests/baselines/reference/es6ModuleInternalImport.js index 4a1659cb901..3f28ddb2b60 100644 --- a/tests/baselines/reference/es6ModuleInternalImport.js +++ b/tests/baselines/reference/es6ModuleInternalImport.js @@ -20,22 +20,20 @@ module m2 { } //// [es6ModuleInternalImport.js] -var m; +export var m; (function (m) { m.a = 10; })(m || (m = {})); -export { m }; export var a1 = m.a; var a2 = m.a; var x = a1 + a2; -var m1; +export var m1; (function (m1) { m1.a3 = m.a; var a4 = m.a; var x = a1 + a2; var x2 = m1.a3 + a4; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { m2.a3 = m.a; diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports.js b/tests/baselines/reference/es6ModuleInternalNamedImports.js index e4881d7ec4e..db7c771eaba 100644 --- a/tests/baselines/reference/es6ModuleInternalNamedImports.js +++ b/tests/baselines/reference/es6ModuleInternalNamedImports.js @@ -33,7 +33,7 @@ export module M { //// [es6ModuleInternalNamedImports.js] -var M; +export var M; (function (M) { // variable M.M_V = 0; @@ -64,4 +64,3 @@ var M; export { M_E as e }; export { M_A as a }; })(M || (M = {})); -export { M }; diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports2.js b/tests/baselines/reference/es6ModuleInternalNamedImports2.js index 3f86def1d42..b0800643060 100644 --- a/tests/baselines/reference/es6ModuleInternalNamedImports2.js +++ b/tests/baselines/reference/es6ModuleInternalNamedImports2.js @@ -35,7 +35,7 @@ export module M { //// [es6ModuleInternalNamedImports2.js] -var M; +export var M; (function (M) { // variable M.M_V = 0; @@ -59,8 +59,7 @@ var M; // alias M.M_A = M_M; })(M || (M = {})); -export { M }; -var M; +export var M; (function (M) { // Reexports export { M_V as v }; @@ -70,4 +69,3 @@ var M; export { M_E as e }; export { M_A as a }; })(M || (M = {})); -export { M }; diff --git a/tests/baselines/reference/es6ModuleLet.js b/tests/baselines/reference/es6ModuleLet.js index 275fd39579e..29d2a73bcf1 100644 --- a/tests/baselines/reference/es6ModuleLet.js +++ b/tests/baselines/reference/es6ModuleLet.js @@ -21,14 +21,13 @@ export let a = "hello"; export let x = a, y = x; let b = y; let c = b, d = c; -var m1; +export var m1; (function (m1) { m1.k = a; m1.l = b, m1.m = m1.k; let n = m1.k; let o = n, p = m1.k; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { m2.k = a; diff --git a/tests/baselines/reference/es6ModuleModuleDeclaration.js b/tests/baselines/reference/es6ModuleModuleDeclaration.js index 1e3716ac8c2..c240545239f 100644 --- a/tests/baselines/reference/es6ModuleModuleDeclaration.js +++ b/tests/baselines/reference/es6ModuleModuleDeclaration.js @@ -25,7 +25,7 @@ module m2 { } //// [es6ModuleModuleDeclaration.js] -var m1; +export var m1; (function (m1) { m1.a = 10; var b = 10; @@ -40,7 +40,6 @@ var m1; var y = 10; })(innerNonExportedModule = m1.innerNonExportedModule || (m1.innerNonExportedModule = {})); })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { m2.a = 10; diff --git a/tests/baselines/reference/es6ModuleVariableStatement.js b/tests/baselines/reference/es6ModuleVariableStatement.js index 11b60555b0d..50c9c3fb4a8 100644 --- a/tests/baselines/reference/es6ModuleVariableStatement.js +++ b/tests/baselines/reference/es6ModuleVariableStatement.js @@ -21,14 +21,13 @@ export var a = "hello"; export var x = a, y = x; var b = y; var c = b, d = c; -var m1; +export var m1; (function (m1) { m1.k = a; m1.l = b, m1.m = m1.k; var n = m1.k; var o = n, p = m1.k; })(m1 || (m1 = {})); -export { m1 }; var m2; (function (m2) { m2.k = a;