From 2dfe32a4df864f27873da4ba9d33ceddfd734f38 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 29 Mar 2015 01:29:09 -0700 Subject: [PATCH 1/4] Fix export.default assignment for export default class/function --- src/compiler/emitter.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 71a35432685..36172abc63c 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2440,11 +2440,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); From 3a72c004a041eb9f0a0f2a6b10ac5a9cbba84f24 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 30 Mar 2015 02:25:09 -0700 Subject: [PATCH 2/4] Emit generated name for unnamed default function in down-level code --- src/compiler/emitter.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 36172abc63c..758dbf2d0f9 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2935,16 +2935,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; } } From 872beeee95ebccac8873671dc5491fecb726a271 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 30 Mar 2015 02:25:47 -0700 Subject: [PATCH 3/4] Accepting new baselines --- tests/baselines/reference/es5ExportDefaultClassDeclaration.js | 2 +- .../baselines/reference/es5ExportDefaultFunctionDeclaration.js | 2 +- .../baselines/reference/es5ExportDefaultFunctionDeclaration2.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration.js b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js index 9cf50988247..f25cf0f4cad 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration.js +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js @@ -13,7 +13,7 @@ var C = (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 980a5ccab0f..e120a419fd3 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js @@ -6,7 +6,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 61f167619eb..c274cc77d1e 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; From 6fda0cb5617c74251786060171093ae8b9422d28 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 30 Mar 2015 02:54:32 -0700 Subject: [PATCH 4/4] Accepting new baselines --- .../reference/es5ExportDefaultFunctionDeclaration.js | 8 +------- .../reference/es5ExportDefaultFunctionDeclaration2.js | 7 +------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js index e98ce208283..673cc3cb453 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js @@ -4,14 +4,8 @@ export default function f() { } //// [es5ExportDefaultFunctionDeclaration.js] -<<<<<<< HEAD -function f() { -} -exports.default = f; -======= function f() { } -exports.f = f; ->>>>>>> master +exports.default = f; //// [es5ExportDefaultFunctionDeclaration.d.ts] diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js index 95a43270e06..ad1334e810b 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js @@ -4,12 +4,7 @@ export default function () { } //// [es5ExportDefaultFunctionDeclaration2.js] -<<<<<<< HEAD -function default_1() { -} -======= -function () { } ->>>>>>> master +function default_1() { } exports.default = default_1;