Skip to content

Commit 038d256

Browse files
authored
Merge pull request #17996 from Microsoft/fix16681
Fix crash when exporting class without name
2 parents c4ed554 + 26a0286 commit 038d256

File tree

5 files changed

+24
-2
lines changed

5 files changed

+24
-2
lines changed

src/compiler/transformers/module/module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ namespace ts {
12041204
}
12051205

12061206
if (hasModifier(decl, ModifierFlags.Export)) {
1207-
const exportName = hasModifier(decl, ModifierFlags.Default) ? createIdentifier("default") : decl.name;
1207+
const exportName = hasModifier(decl, ModifierFlags.Default) ? createIdentifier("default") : getDeclarationName(decl);
12081208
statements = appendExportStatement(statements, exportName, getLocalName(decl), /*location*/ decl);
12091209
}
12101210

src/compiler/transformers/utilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ namespace ts {
124124
else {
125125
// export class x { }
126126
const name = (<ClassDeclaration>node).name;
127-
if (!uniqueExports.get(unescapeLeadingUnderscores(name.escapedText))) {
127+
if (name && !uniqueExports.get(unescapeLeadingUnderscores(name.escapedText))) {
128128
multiMapSparseArrayAdd(exportedBindings, getOriginalNodeId(node), name);
129129
uniqueExports.set(unescapeLeadingUnderscores(name.escapedText), true);
130130
exportedNames = append(exportedNames, name);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
tests/cases/compiler/exportClassWithoutName.ts(1,1): error TS1211: A class declaration without the 'default' modifier must have a name.
2+
3+
4+
==== tests/cases/compiler/exportClassWithoutName.ts (1 errors) ====
5+
export class {
6+
~~~~~~
7+
!!! error TS1211: A class declaration without the 'default' modifier must have a name.
8+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [exportClassWithoutName.ts]
2+
export class {
3+
}
4+
5+
//// [exportClassWithoutName.js]
6+
"use strict";
7+
Object.defineProperty(exports, "__esModule", { value: true });
8+
class default_1 {
9+
}
10+
exports.default_1 = default_1;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
//@module: commonjs
2+
//@target: es2015
3+
export class {
4+
}

0 commit comments

Comments
 (0)