Skip to content

Commit 616f638

Browse files
committed
Merge pull request #2547 from Microsoft/exportDefault
Export default fixes
2 parents 5f7b13b + 6fda0cb commit 616f638

File tree

4 files changed

+11
-13
lines changed

4 files changed

+11
-13
lines changed

src/compiler/emitter.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2424,11 +2424,11 @@ module ts {
24242424
if (node.flags & NodeFlags.Export) {
24252425
writeLine();
24262426
emitStart(node);
2427-
if (node.name) {
2428-
emitModuleMemberName(node);
2427+
if (node.flags & NodeFlags.Default) {
2428+
write("exports.default");
24292429
}
24302430
else {
2431-
write("exports.default");
2431+
emitModuleMemberName(node);
24322432
}
24332433
write(" = ");
24342434
emitDeclarationName(node);
@@ -2919,16 +2919,14 @@ module ts {
29192919
}
29202920
}
29212921

2922-
function shouldEmitFunctionName(node: Declaration): boolean {
2923-
// Emit a declaration name for the function iff:
2924-
// it is a function expression with a name provided
2925-
// it is a function declaration with a name provided
2926-
// it is a function declaration is not the default export, and is missing a name (emit a generated name for it)
2922+
function shouldEmitFunctionName(node: FunctionLikeDeclaration) {
29272923
if (node.kind === SyntaxKind.FunctionExpression) {
2924+
// Emit name if one is present
29282925
return !!node.name;
29292926
}
2930-
else if (node.kind === SyntaxKind.FunctionDeclaration) {
2931-
return !!node.name || (languageVersion >= ScriptTarget.ES6 && !(node.flags & NodeFlags.Default));
2927+
if (node.kind === SyntaxKind.FunctionDeclaration) {
2928+
// Emit name if one is present, or emit generated name in down-level case (for export default case)
2929+
return !!node.name || languageVersion < ScriptTarget.ES6;
29322930
}
29332931
}
29342932

tests/baselines/reference/es5ExportDefaultClassDeclaration.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var C = (function () {
1212
C.prototype.method = function () { };
1313
return C;
1414
})();
15-
exports.C = C;
15+
exports.default = C;
1616

1717

1818
//// [es5ExportDefaultClassDeclaration.d.ts]

tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default function f() { }
55

66
//// [es5ExportDefaultFunctionDeclaration.js]
77
function f() { }
8-
exports.f = f;
8+
exports.default = f;
99

1010

1111
//// [es5ExportDefaultFunctionDeclaration.d.ts]

tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export default function () { }
44

55

66
//// [es5ExportDefaultFunctionDeclaration2.js]
7-
function () { }
7+
function default_1() { }
88
exports.default = default_1;
99

1010

0 commit comments

Comments
 (0)