Skip to content

Commit 7d257b2

Browse files
Merge pull request microsoft#4991 from MartyIX/patch-1
Do not auto-generate names for anonymous class expressions
2 parents d9559d5 + 08a494e commit 7d257b2

2 files changed

Lines changed: 5 additions & 3 deletions

File tree

src/compiler/emitter.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4529,8 +4529,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
45294529

45304530
write("class");
45314531

4532-
// 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.
4533-
if ((node.name || !(node.flags & NodeFlags.Default)) && !thisNodeIsDecorated) {
4532+
// emit name if
4533+
// - node has a name
4534+
// - this is default export and target is not ES6 (for ES6 `export default` does not need to be compiled downlevel)
4535+
if ((node.name || (node.flags & NodeFlags.Default && languageVersion < ScriptTarget.ES6)) && !thisNodeIsDecorated) {
45344536
write(" ");
45354537
emitDeclarationName(node);
45364538
}

tests/baselines/reference/classExpressionES63.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ c.c;
77

88

99
//// [classExpressionES63.js]
10-
let C = class class_1 extends class class_2 extends class class_3 {
10+
let C = class extends class extends class {
1111
constructor() {
1212
this.a = 1;
1313
}

0 commit comments

Comments
 (0)