Skip to content

Commit bc51dd1

Browse files
committed
In ES6 use "export var x" for internal modules and enums instead of an after the fact "export {x};"
1 parent ab5c09a commit bc51dd1

15 files changed

Lines changed: 26 additions & 53 deletions

src/compiler/emitter.ts

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3487,6 +3487,9 @@ module ts {
34873487

34883488
if (!(node.flags & NodeFlags.Export) || isES6ExportedDeclaration(node)) {
34893489
emitStart(node);
3490+
if (isES6ExportedDeclaration(node)) {
3491+
write("export ");
3492+
}
34903493
write("var ");
34913494
emit(node.name);
34923495
emitEnd(node);
@@ -3512,10 +3515,7 @@ module ts {
35123515
emitModuleMemberName(node);
35133516
write(" = {}));");
35143517
emitEnd(node);
3515-
if (isES6ExportedDeclaration(node)) {
3516-
emitES6NamedExportForDeclaration(node);
3517-
}
3518-
else if (node.flags & NodeFlags.Export) {
3518+
if (!isES6ExportedDeclaration(node) && node.flags & NodeFlags.Export) {
35193519
writeLine();
35203520
emitStart(node);
35213521
write("var ");
@@ -3580,6 +3580,9 @@ module ts {
35803580
}
35813581

35823582
emitStart(node);
3583+
if (isES6ExportedDeclaration(node)) {
3584+
write("export ");
3585+
}
35833586
write("var ");
35843587
emit(node.name);
35853588
write(";");
@@ -3628,23 +3631,11 @@ module ts {
36283631
emitModuleMemberName(node);
36293632
write(" = {}));");
36303633
emitEnd(node);
3631-
if (isES6ExportedDeclaration(node)) {
3632-
emitES6NamedExportForDeclaration(node);
3633-
}
3634-
else if (languageVersion < ScriptTarget.ES6 && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) {
3634+
if (!isES6ExportedDeclaration(node) && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) {
36353635
emitExportMemberAssignments(<Identifier>node.name);
36363636
}
36373637
}
36383638

3639-
function emitES6NamedExportForDeclaration(node: Declaration) {
3640-
writeLine();
3641-
emitStart(node);
3642-
write("export { ");
3643-
emit(node.name);
3644-
write(" };");
3645-
emitEnd(node);
3646-
}
3647-
36483639
function emitRequire(moduleName: Expression) {
36493640
if (moduleName.kind === SyntaxKind.StringLiteral) {
36503641
write("require(");

tests/baselines/reference/es6ExportAll.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ export * from "server";
1919
//// [server.js]
2020
export class c {
2121
}
22-
var m;
22+
export var m;
2323
(function (m) {
2424
m.x = 10;
2525
})(m || (m = {}));
26-
export { m };
2726
export var x = 10;
2827
//// [client.js]
2928
export * from "server";

tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ export { x } from "server";
2323
//// [server.js]
2424
export class c {
2525
}
26-
var m;
26+
export var m;
2727
(function (m) {
2828
m.x = 10;
2929
})(m || (m = {}));
30-
export { m };
3130
export var x = 10;
3231
//// [client.js]
3332
export { c } from "server";

tests/baselines/reference/es6ModuleClassDeclaration.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ c2.k = 20;
147147
c2.l = 30;
148148
new c();
149149
new c2();
150-
var m1;
150+
export var m1;
151151
(function (m1) {
152152
class c3 {
153153
constructor() {
@@ -187,7 +187,6 @@ var m1;
187187
new c3();
188188
new c4();
189189
})(m1 || (m1 = {}));
190-
export { m1 };
191190
var m2;
192191
(function (m2) {
193192
class c3 {

tests/baselines/reference/es6ModuleConst.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ export const a = "hello";
2121
export const x = a, y = x;
2222
const b = y;
2323
const c = b, d = c;
24-
var m1;
24+
export var m1;
2525
(function (m1) {
2626
m1.k = a;
2727
m1.l = b, m1.m = m1.k;
2828
const n = m1.k;
2929
const o = n, p = m1.k;
3030
})(m1 || (m1 = {}));
31-
export { m1 };
3231
var m2;
3332
(function (m2) {
3433
m2.k = a;

tests/baselines/reference/es6ModuleConstEnumDeclaration.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,13 @@ module m2 {
4848
//// [es6ModuleConstEnumDeclaration.js]
4949
var x = 0 /* a */;
5050
var y = 0 /* x */;
51-
var m1;
51+
export var m1;
5252
(function (m1) {
5353
var x1 = 0 /* a */;
5454
var y1 = 0 /* x */;
5555
var x2 = 0 /* a */;
5656
var y2 = 0 /* x */;
5757
})(m1 || (m1 = {}));
58-
export { m1 };
5958
var m2;
6059
(function (m2) {
6160
var x1 = 0 /* a */;

tests/baselines/reference/es6ModuleConstEnumDeclaration2.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,12 @@ module m2 {
4747
}
4848

4949
//// [es6ModuleConstEnumDeclaration2.js]
50-
var e1;
50+
export var e1;
5151
(function (e1) {
5252
e1[e1["a"] = 0] = "a";
5353
e1[e1["b"] = 1] = "b";
5454
e1[e1["c"] = 2] = "c";
5555
})(e1 || (e1 = {}));
56-
export { e1 };
5756
var e2;
5857
(function (e2) {
5958
e2[e2["x"] = 0] = "x";
@@ -62,7 +61,7 @@ var e2;
6261
})(e2 || (e2 = {}));
6362
var x = 0 /* a */;
6463
var y = 0 /* x */;
65-
var m1;
64+
export var m1;
6665
(function (m1) {
6766
(function (e3) {
6867
e3[e3["a"] = 0] = "a";
@@ -81,7 +80,6 @@ var m1;
8180
var x2 = 0 /* a */;
8281
var y2 = 0 /* x */;
8382
})(m1 || (m1 = {}));
84-
export { m1 };
8583
var m2;
8684
(function (m2) {
8785
(function (e5) {

tests/baselines/reference/es6ModuleEnumDeclaration.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,12 @@ module m2 {
4646
}
4747

4848
//// [es6ModuleEnumDeclaration.js]
49-
var e1;
49+
export var e1;
5050
(function (e1) {
5151
e1[e1["a"] = 0] = "a";
5252
e1[e1["b"] = 1] = "b";
5353
e1[e1["c"] = 2] = "c";
5454
})(e1 || (e1 = {}));
55-
export { e1 };
5655
var e2;
5756
(function (e2) {
5857
e2[e2["x"] = 0] = "x";
@@ -61,7 +60,7 @@ var e2;
6160
})(e2 || (e2 = {}));
6261
var x = e1.a;
6362
var y = e2.x;
64-
var m1;
63+
export var m1;
6564
(function (m1) {
6665
(function (e3) {
6766
e3[e3["a"] = 0] = "a";
@@ -80,7 +79,6 @@ var m1;
8079
var x2 = e3.a;
8180
var y2 = e4.x;
8281
})(m1 || (m1 = {}));
83-
export { m1 };
8482
var m2;
8583
(function (m2) {
8684
(function (e5) {

tests/baselines/reference/es6ModuleFunctionDeclaration.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ function foo2() {
3535
}
3636
foo();
3737
foo2();
38-
var m1;
38+
export var m1;
3939
(function (m1) {
4040
function foo3() {
4141
}
@@ -47,7 +47,6 @@ var m1;
4747
foo3();
4848
foo4();
4949
})(m1 || (m1 = {}));
50-
export { m1 };
5150
var m2;
5251
(function (m2) {
5352
function foo3() {

tests/baselines/reference/es6ModuleInternalImport.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,20 @@ module m2 {
2020
}
2121

2222
//// [es6ModuleInternalImport.js]
23-
var m;
23+
export var m;
2424
(function (m) {
2525
m.a = 10;
2626
})(m || (m = {}));
27-
export { m };
2827
export var a1 = m.a;
2928
var a2 = m.a;
3029
var x = a1 + a2;
31-
var m1;
30+
export var m1;
3231
(function (m1) {
3332
m1.a3 = m.a;
3433
var a4 = m.a;
3534
var x = a1 + a2;
3635
var x2 = m1.a3 + a4;
3736
})(m1 || (m1 = {}));
38-
export { m1 };
3937
var m2;
4038
(function (m2) {
4139
m2.a3 = m.a;

0 commit comments

Comments
 (0)