From 08a494ecbfe4d243aa305d0356276a1c1b08b66f Mon Sep 17 00:00:00 2001 From: MartyIX Date: Sun, 27 Sep 2015 22:51:49 +0200 Subject: [PATCH] Update emitter.ts Proposed fix for #4908 Can anybody confirm if I'm on a right track? --- src/compiler/emitter.ts | 6 ++++-- tests/baselines/reference/classExpressionES63.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 6a6b75af65f..51e919ee8ee 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4529,8 +4529,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("class"); - // check if this is an "export default class" as it may not have a name. Do not emit the name if the class is decorated. - if ((node.name || !(node.flags & NodeFlags.Default)) && !thisNodeIsDecorated) { + // emit name if + // - node has a name + // - this is default export and target is not ES6 (for ES6 `export default` does not need to be compiled downlevel) + if ((node.name || (node.flags & NodeFlags.Default && languageVersion < ScriptTarget.ES6)) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } diff --git a/tests/baselines/reference/classExpressionES63.js b/tests/baselines/reference/classExpressionES63.js index 6d357af7c5a..6b3a06cf7c3 100644 --- a/tests/baselines/reference/classExpressionES63.js +++ b/tests/baselines/reference/classExpressionES63.js @@ -7,7 +7,7 @@ c.c; //// [classExpressionES63.js] -let C = class class_1 extends class class_2 extends class class_3 { +let C = class extends class extends class { constructor() { this.a = 1; }