diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 366bb1856ea..ac5fa31319f 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2424,11 +2424,11 @@ module ts { if (node.flags & NodeFlags.Export) { writeLine(); emitStart(node); - if (node.name) { - emitModuleMemberName(node); + if (node.flags & NodeFlags.Default) { + write("exports.default"); } else { - write("exports.default"); + emitModuleMemberName(node); } write(" = "); emitDeclarationName(node); @@ -2919,16 +2919,14 @@ module ts { } } - function shouldEmitFunctionName(node: Declaration): boolean { - // Emit a declaration name for the function iff: - // it is a function expression with a name provided - // it is a function declaration with a name provided - // it is a function declaration is not the default export, and is missing a name (emit a generated name for it) + function shouldEmitFunctionName(node: FunctionLikeDeclaration) { if (node.kind === SyntaxKind.FunctionExpression) { + // Emit name if one is present return !!node.name; } - else if (node.kind === SyntaxKind.FunctionDeclaration) { - return !!node.name || (languageVersion >= ScriptTarget.ES6 && !(node.flags & NodeFlags.Default)); + if (node.kind === SyntaxKind.FunctionDeclaration) { + // Emit name if one is present, or emit generated name in down-level case (for export default case) + return !!node.name || languageVersion < ScriptTarget.ES6; } } diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration.js b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js index 28998249838..b5cfdb02f78 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration.js +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js @@ -12,7 +12,7 @@ var C = (function () { C.prototype.method = function () { }; return C; })(); -exports.C = C; +exports.default = C; //// [es5ExportDefaultClassDeclaration.d.ts] diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js index 7bea3b7e2e2..673cc3cb453 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js @@ -5,7 +5,7 @@ export default function f() { } //// [es5ExportDefaultFunctionDeclaration.js] function f() { } -exports.f = f; +exports.default = f; //// [es5ExportDefaultFunctionDeclaration.d.ts] diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js index 6fc003661a9..ad1334e810b 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js @@ -4,7 +4,7 @@ export default function () { } //// [es5ExportDefaultFunctionDeclaration2.js] -function () { } +function default_1() { } exports.default = default_1;