@@ -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