@@ -1580,6 +1580,7 @@ module ts {
15801580 var generatedBlockScopeNames : string [ ] ;
15811581
15821582 var extendsEmitted = false ;
1583+ var tempCount = 0 ;
15831584 var tempVariables : Identifier [ ] ;
15841585 var tempParameters : Identifier [ ] ;
15851586 var externalImports : ExternalImportInfo [ ] ;
@@ -2089,7 +2090,15 @@ module ts {
20892090 // Create a temporary variable with a unique unused name. The forLoopVariable parameter signals that the
20902091 // name should be one that is appropriate for a for loop variable.
20912092 function createTempVariable ( location : Node , forLoopVariable ?: boolean ) : Identifier {
2092- var name = generateUniqueNameForLocation ( location , /*baseName*/ forLoopVariable ? "_i" : "_a" ) ;
2093+ var name = forLoopVariable ? "_i" : undefined ;
2094+ while ( true ) {
2095+ if ( name && ! isExistingName ( location , name ) ) {
2096+ break ;
2097+ }
2098+ // _a .. _h, _j ... _z, _0, _1, ...
2099+ name = "_" + ( tempCount < 25 ? String . fromCharCode ( tempCount + ( tempCount < 8 ? 0 : 1 ) + CharacterCodes . a ) : tempCount - 25 ) ;
2100+ tempCount ++ ;
2101+ }
20932102 var result = < Identifier > createSynthesizedNode ( SyntaxKind . Identifier ) ;
20942103 result . text = name ;
20952104 return result ;
@@ -4259,8 +4268,10 @@ module ts {
42594268 }
42604269
42614270 function emitSignatureAndBody ( node : FunctionLikeDeclaration ) {
4271+ var saveTempCount = tempCount ;
42624272 var saveTempVariables = tempVariables ;
42634273 var saveTempParameters = tempParameters ;
4274+ tempCount = 0 ;
42644275 tempVariables = undefined ;
42654276 tempParameters = undefined ;
42664277
@@ -4299,6 +4310,7 @@ module ts {
42994310
43004311 exitNameScope ( popFrame ) ;
43014312
4313+ tempCount = saveTempCount ;
43024314 tempVariables = saveTempVariables ;
43034315 tempParameters = saveTempParameters ;
43044316 }
@@ -4613,8 +4625,10 @@ module ts {
46134625 }
46144626
46154627 function emitConstructorOfClass ( ) {
4628+ var saveTempCount = tempCount ;
46164629 var saveTempVariables = tempVariables ;
46174630 var saveTempParameters = tempParameters ;
4631+ tempCount = 0 ;
46184632 tempVariables = undefined ;
46194633 tempParameters = undefined ;
46204634
@@ -4683,6 +4697,7 @@ module ts {
46834697
46844698 exitNameScope ( popFrame ) ;
46854699
4700+ tempCount = saveTempCount ;
46864701 tempVariables = saveTempVariables ;
46874702 tempParameters = saveTempParameters ;
46884703 }
@@ -4810,13 +4825,16 @@ module ts {
48104825 emitEnd ( node . name ) ;
48114826 write ( ") " ) ;
48124827 if ( node . body . kind === SyntaxKind . ModuleBlock ) {
4828+ var saveTempCount = tempCount ;
48134829 var saveTempVariables = tempVariables ;
4830+ tempCount = 0 ;
48144831 tempVariables = undefined ;
48154832 var popFrame = enterNameScope ( ) ;
48164833
48174834 emit ( node . body ) ;
48184835
48194836 exitNameScope ( popFrame ) ;
4837+ tempCount = saveTempCount ;
48204838 tempVariables = saveTempVariables ;
48214839 }
48224840 else {
0 commit comments