Skip to content

Commit f2be34a

Browse files
committed
Support emit of unnamed export default function/class
1 parent daacd80 commit f2be34a

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

src/compiler/emitter.ts

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3825,6 +3825,15 @@ module ts {
38253825
return node.kind === SyntaxKind.ArrowFunction && languageVersion >= ScriptTarget.ES6;
38263826
}
38273827

3828+
function emitDeclarationName(node: Declaration) {
3829+
if (node.name) {
3830+
emitNode(node.name);
3831+
}
3832+
else {
3833+
write(resolver.getGeneratedNameForNode(node));
3834+
}
3835+
}
3836+
38283837
function emitFunctionDeclaration(node: FunctionLikeDeclaration) {
38293838
if (nodeIsMissing(node.body)) {
38303839
return emitPinnedOrTripleSlashComments(node);
@@ -3842,10 +3851,10 @@ module ts {
38423851
}
38433852

38443853
if (node.kind === SyntaxKind.FunctionDeclaration || (node.kind === SyntaxKind.FunctionExpression && node.name)) {
3845-
emitNode(node.name);
3854+
emitDeclarationName(node);
38463855
}
38473856
emitSignatureAndBody(node);
3848-
if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.FunctionDeclaration && node.parent === currentSourceFile) {
3857+
if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.FunctionDeclaration && node.parent === currentSourceFile && node.name) {
38493858
emitExportMemberAssignments((<FunctionDeclaration>node).name);
38503859
}
38513860
if (node.kind !== SyntaxKind.MethodDeclaration && node.kind !== SyntaxKind.MethodSignature) {
@@ -3917,7 +3926,7 @@ module ts {
39173926
emitStart(node);
39183927
emitModuleMemberName(node);
39193928
write(" = ");
3920-
emitNode(node.name);
3929+
emitDeclarationName(node);
39213930
emitEnd(node);
39223931
write(";");
39233932
}
@@ -4125,7 +4134,7 @@ module ts {
41254134
emitStart(member);
41264135
emitStart((<PropertyDeclaration>member).name);
41274136
if (staticFlag) {
4128-
emitNode(node.name);
4137+
emitDeclarationName(node);
41294138
}
41304139
else {
41314140
write("this");
@@ -4152,7 +4161,7 @@ module ts {
41524161
emitLeadingComments(member);
41534162
emitStart(member);
41544163
emitStart((<MethodDeclaration>member).name);
4155-
emitNode(node.name); // TODO (shkamat,drosen): comment for why emitNode instead of emit.
4164+
emitDeclarationName(node);
41564165
if (!(member.flags & NodeFlags.Static)) {
41574166
write(".prototype");
41584167
}
@@ -4174,7 +4183,7 @@ module ts {
41744183
emitStart(member);
41754184
write("Object.defineProperty(");
41764185
emitStart((<AccessorDeclaration>member).name);
4177-
emitNode(node.name);
4186+
emitDeclarationName(node);
41784187
if (!(member.flags & NodeFlags.Static)) {
41794188
write(".prototype");
41804189
}
@@ -4221,7 +4230,7 @@ module ts {
42214230

42224231
function emitClassDeclaration(node: ClassDeclaration) {
42234232
write("var ");
4224-
emitNode(node.name);
4233+
emitDeclarationName(node);
42254234
write(" = (function (");
42264235
var baseTypeNode = getClassBaseTypeNode(node);
42274236
if (baseTypeNode) {
@@ -4234,7 +4243,7 @@ module ts {
42344243
writeLine();
42354244
emitStart(baseTypeNode);
42364245
write("__extends(");
4237-
emitNode(node.name);
4246+
emitDeclarationName(node);
42384247
write(", _super);");
42394248
emitEnd(baseTypeNode);
42404249
}
@@ -4245,7 +4254,7 @@ module ts {
42454254
writeLine();
42464255
emitToken(SyntaxKind.CloseBraceToken, node.members.end, () => {
42474256
write("return ");
4248-
emitNode(node.name);
4257+
emitDeclarationName(node);
42494258
});
42504259
write(";");
42514260
decreaseIndent();
@@ -4264,7 +4273,7 @@ module ts {
42644273
emitStart(node);
42654274
emitModuleMemberName(node);
42664275
write(" = ");
4267-
emitNode(node.name);
4276+
emitDeclarationName(node);
42684277
emitEnd(node);
42694278
write(";");
42704279
}
@@ -4292,7 +4301,7 @@ module ts {
42924301
}
42934302
emitStart(<Node>ctor || node);
42944303
write("function ");
4295-
emitNode(node.name);
4304+
emitDeclarationName(node);
42964305
emitSignatureParameters(ctor);
42974306
write(" {");
42984307
scopeEmitStart(node, "constructor");
@@ -4796,7 +4805,7 @@ module ts {
47964805
emit((<ExportSpecifier>exportDefault).propertyName);
47974806
}
47984807
else {
4799-
emit((<Declaration>exportDefault).name);
4808+
emitDeclarationName(<Declaration>exportDefault);
48004809
}
48014810
write(";");
48024811
emitEnd(exportDefault);

0 commit comments

Comments
 (0)