@@ -3825,6 +3825,15 @@ module ts {
3825
3825
return node . kind === SyntaxKind . ArrowFunction && languageVersion >= ScriptTarget . ES6 ;
3826
3826
}
3827
3827
3828
+ function emitDeclarationName ( node : Declaration ) {
3829
+ if ( node . name ) {
3830
+ emitNode ( node . name ) ;
3831
+ }
3832
+ else {
3833
+ write ( resolver . getGeneratedNameForNode ( node ) ) ;
3834
+ }
3835
+ }
3836
+
3828
3837
function emitFunctionDeclaration ( node : FunctionLikeDeclaration ) {
3829
3838
if ( nodeIsMissing ( node . body ) ) {
3830
3839
return emitPinnedOrTripleSlashComments ( node ) ;
@@ -3842,10 +3851,10 @@ module ts {
3842
3851
}
3843
3852
3844
3853
if ( node . kind === SyntaxKind . FunctionDeclaration || ( node . kind === SyntaxKind . FunctionExpression && node . name ) ) {
3845
- emitNode ( node . name ) ;
3854
+ emitDeclarationName ( node ) ;
3846
3855
}
3847
3856
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 ) {
3849
3858
emitExportMemberAssignments ( ( < FunctionDeclaration > node ) . name ) ;
3850
3859
}
3851
3860
if ( node . kind !== SyntaxKind . MethodDeclaration && node . kind !== SyntaxKind . MethodSignature ) {
@@ -3917,7 +3926,7 @@ module ts {
3917
3926
emitStart ( node ) ;
3918
3927
emitModuleMemberName ( node ) ;
3919
3928
write ( " = " ) ;
3920
- emitNode ( node . name ) ;
3929
+ emitDeclarationName ( node ) ;
3921
3930
emitEnd ( node ) ;
3922
3931
write ( ";" ) ;
3923
3932
}
@@ -4125,7 +4134,7 @@ module ts {
4125
4134
emitStart ( member ) ;
4126
4135
emitStart ( ( < PropertyDeclaration > member ) . name ) ;
4127
4136
if ( staticFlag ) {
4128
- emitNode ( node . name ) ;
4137
+ emitDeclarationName ( node ) ;
4129
4138
}
4130
4139
else {
4131
4140
write ( "this" ) ;
@@ -4152,7 +4161,7 @@ module ts {
4152
4161
emitLeadingComments ( member ) ;
4153
4162
emitStart ( member ) ;
4154
4163
emitStart ( ( < MethodDeclaration > member ) . name ) ;
4155
- emitNode ( node . name ) ; // TODO (shkamat,drosen): comment for why emitNode instead of emit.
4164
+ emitDeclarationName ( node ) ;
4156
4165
if ( ! ( member . flags & NodeFlags . Static ) ) {
4157
4166
write ( ".prototype" ) ;
4158
4167
}
@@ -4174,7 +4183,7 @@ module ts {
4174
4183
emitStart ( member ) ;
4175
4184
write ( "Object.defineProperty(" ) ;
4176
4185
emitStart ( ( < AccessorDeclaration > member ) . name ) ;
4177
- emitNode ( node . name ) ;
4186
+ emitDeclarationName ( node ) ;
4178
4187
if ( ! ( member . flags & NodeFlags . Static ) ) {
4179
4188
write ( ".prototype" ) ;
4180
4189
}
@@ -4221,7 +4230,7 @@ module ts {
4221
4230
4222
4231
function emitClassDeclaration ( node : ClassDeclaration ) {
4223
4232
write ( "var " ) ;
4224
- emitNode ( node . name ) ;
4233
+ emitDeclarationName ( node ) ;
4225
4234
write ( " = (function (" ) ;
4226
4235
var baseTypeNode = getClassBaseTypeNode ( node ) ;
4227
4236
if ( baseTypeNode ) {
@@ -4234,7 +4243,7 @@ module ts {
4234
4243
writeLine ( ) ;
4235
4244
emitStart ( baseTypeNode ) ;
4236
4245
write ( "__extends(" ) ;
4237
- emitNode ( node . name ) ;
4246
+ emitDeclarationName ( node ) ;
4238
4247
write ( ", _super);" ) ;
4239
4248
emitEnd ( baseTypeNode ) ;
4240
4249
}
@@ -4245,7 +4254,7 @@ module ts {
4245
4254
writeLine ( ) ;
4246
4255
emitToken ( SyntaxKind . CloseBraceToken , node . members . end , ( ) => {
4247
4256
write ( "return " ) ;
4248
- emitNode ( node . name ) ;
4257
+ emitDeclarationName ( node ) ;
4249
4258
} ) ;
4250
4259
write ( ";" ) ;
4251
4260
decreaseIndent ( ) ;
@@ -4264,7 +4273,7 @@ module ts {
4264
4273
emitStart ( node ) ;
4265
4274
emitModuleMemberName ( node ) ;
4266
4275
write ( " = " ) ;
4267
- emitNode ( node . name ) ;
4276
+ emitDeclarationName ( node ) ;
4268
4277
emitEnd ( node ) ;
4269
4278
write ( ";" ) ;
4270
4279
}
@@ -4292,7 +4301,7 @@ module ts {
4292
4301
}
4293
4302
emitStart ( < Node > ctor || node ) ;
4294
4303
write ( "function " ) ;
4295
- emitNode ( node . name ) ;
4304
+ emitDeclarationName ( node ) ;
4296
4305
emitSignatureParameters ( ctor ) ;
4297
4306
write ( " {" ) ;
4298
4307
scopeEmitStart ( node , "constructor" ) ;
@@ -4796,7 +4805,7 @@ module ts {
4796
4805
emit ( ( < ExportSpecifier > exportDefault ) . propertyName ) ;
4797
4806
}
4798
4807
else {
4799
- emit ( ( < Declaration > exportDefault ) . name ) ;
4808
+ emitDeclarationName ( < Declaration > exportDefault ) ;
4800
4809
}
4801
4810
write ( ";" ) ;
4802
4811
emitEnd ( exportDefault ) ;
0 commit comments