1+ /// <reference path="..\formatting.ts"/>
12/// <reference path="..\..\compiler\scanner.ts"/>
23
34module ts . formatting {
@@ -14,7 +15,8 @@ module ts.formatting {
1415 const enum ScanAction {
1516 Scan ,
1617 RescanGreaterThanToken ,
17- RescanSlashToken
18+ RescanSlashToken ,
19+ RescanTemplateToken
1820 }
1921
2022 export function getFormattingScanner ( sourceFile : SourceFile , startPos : number , endPos : number ) : FormattingScanner {
@@ -111,6 +113,10 @@ module ts.formatting {
111113 return container . kind === SyntaxKind . RegularExpressionLiteral ;
112114 }
113115
116+ function shouldRescanTemplateToken ( container : Node ) : boolean {
117+ return container . kind === SyntaxKind . TemplateSpan ;
118+ }
119+
114120 function startsWithSlashToken ( t : SyntaxKind ) : boolean {
115121 return t === SyntaxKind . SlashToken || t === SyntaxKind . SlashEqualsToken ;
116122 }
@@ -132,7 +138,9 @@ module ts.formatting {
132138 ? ScanAction . RescanGreaterThanToken
133139 : shouldRescanSlashToken ( n )
134140 ? ScanAction . RescanSlashToken
135- : ScanAction . Scan
141+ : shouldRescanTemplateToken ( n )
142+ ? ScanAction . RescanTemplateToken
143+ : ScanAction . Scan
136144
137145 if ( lastTokenInfo && expectedScanAction === lastScanAction ) {
138146 // readTokenInfo was called before with the same expected scan action.
@@ -159,6 +167,10 @@ module ts.formatting {
159167 Debug . assert ( n . kind === currentToken ) ;
160168 lastScanAction = ScanAction . RescanSlashToken ;
161169 }
170+ else if ( expectedScanAction === ScanAction . RescanTemplateToken && currentToken === SyntaxKind . CloseBraceToken ) {
171+ currentToken = scanner . reScanTemplateToken ( ) ;
172+ lastScanAction = ScanAction . RescanTemplateToken ;
173+ }
162174 else {
163175 lastScanAction = ScanAction . Scan ;
164176 }
0 commit comments