@@ -299,7 +299,7 @@ module ts.formatting {
299299 if ( node . parent . kind !== SyntaxKind . SourceFile && tokenStartLine !== nodeStartLine ) {
300300 oldDelta = nodeIndentation . setDelta ( options . IndentSize ) ;
301301 }
302- doConsumeTokenAndAdvanceScanner ( tokenInfo , node , startTokenIndentation ) ;
302+ consumeTokenAndAdvanceScanner ( tokenInfo , node , startTokenIndentation ) ;
303303 if ( oldDelta !== - 1 ) {
304304 nodeIndentation . setDelta ( oldDelta ) ;
305305 }
@@ -319,7 +319,7 @@ module ts.formatting {
319319 if ( tokenInfo . token . kind === listEndToken && formattingScanner . lastTrailingTriviaWasNewLine ( ) ) {
320320 var old = nodeIndentation . setDelta ( options . IndentSize ) ;
321321 //var endTokenIndentation = nodeIndentation.getIndentation() + options.IndentSize;
322- doConsumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
322+ consumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
323323 nodeIndentation . setDelta ( old ) ;
324324 }
325325 }
@@ -336,7 +336,7 @@ module ts.formatting {
336336 if ( SmartIndenter . nodeContentIsAlwaysIndented ( node . kind ) && node . end === tokenInfo . token . end ) {
337337 nodeIndentation . increaseCommentIndentation ( options . IndentSize ) ;
338338 }
339- doConsumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
339+ consumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
340340 }
341341
342342 function processChildNode (
@@ -356,7 +356,7 @@ module ts.formatting {
356356 break ;
357357 }
358358
359- doConsumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
359+ consumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
360360 }
361361
362362 if ( ! formattingScanner . isOnToken ( ) ) {
@@ -385,7 +385,7 @@ module ts.formatting {
385385 if ( isToken ( child ) ) {
386386 var tokenInfo = formattingScanner . readTokenInfo ( node ) ;
387387 Debug . assert ( tokenInfo . token . end === child . end ) ;
388- doConsumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
388+ consumeTokenAndAdvanceScanner ( tokenInfo , node , nodeIndentation ) ;
389389 return inheritedIndentation ;
390390 }
391391
@@ -421,76 +421,74 @@ module ts.formatting {
421421
422422 processNode ( child , childContextNode , childStart . line , childIndentationAmount , childDelta ) ;
423423 childContextNode = node ;
424- return inheritedIndentation ;
425- }
426424
427- function doConsumeTokenAndAdvanceScanner ( currentTokenInfo : TokenInfo , parent : Node , indentation : DynamicIndentation ) : void {
428- consumeTokenAndAdvanceScanner ( currentTokenInfo , parent , childContextNode , indentation ) ;
429- childContextNode = parent ;
425+ return inheritedIndentation ;
430426 }
431- }
432427
433- function consumeTokenAndAdvanceScanner ( currentTokenInfo : TokenInfo , parent : Node , contextNode : Node , indentation : DynamicIndentation ) : void {
434- Debug . assert ( rangeContainsRange ( parent , currentTokenInfo . token ) ) ;
428+ function consumeTokenAndAdvanceScanner ( currentTokenInfo : TokenInfo , parent : Node , indentation : DynamicIndentation ) : void {
429+ Debug . assert ( rangeContainsRange ( parent , currentTokenInfo . token ) ) ;
435430
436- lastTriviaWasNewLine = formattingScanner . lastTrailingTriviaWasNewLine ( ) ;
431+ lastTriviaWasNewLine = formattingScanner . lastTrailingTriviaWasNewLine ( ) ;
437432
438- if ( currentTokenInfo . leadingTrivia ) {
439- processTrivia ( currentTokenInfo . leadingTrivia , parent , contextNode , indentation ) ;
440- }
433+ if ( currentTokenInfo . leadingTrivia ) {
434+ processTrivia ( currentTokenInfo . leadingTrivia , parent , childContextNode , indentation ) ;
435+ }
441436
442- var lineAdded : boolean ;
443- var isTokenInRange = rangeContainsRange ( originalRange , currentTokenInfo . token ) ;
444- var indentToken : boolean = true ;
437+ var lineAdded : boolean ;
438+ var isTokenInRange = rangeContainsRange ( originalRange , currentTokenInfo . token ) ;
439+ var indentToken : boolean = true ;
445440
446- var tokenStart = sourceFile . getLineAndCharacterFromPosition ( currentTokenInfo . token . pos ) ;
447- if ( isTokenInRange ) {
448- var prevStartLine = previousRangeStartLine ;
449- lineAdded = processRange ( currentTokenInfo . token , tokenStart , parent , contextNode , indentation ) ;
450- if ( lineAdded !== undefined ) {
451- indentToken = lineAdded ;
452- }
453- else {
454- indentToken = tokenStart . line !== prevStartLine ;
441+ var tokenStart = sourceFile . getLineAndCharacterFromPosition ( currentTokenInfo . token . pos ) ;
442+ if ( isTokenInRange ) {
443+ var prevStartLine = previousRangeStartLine ;
444+ lineAdded = processRange ( currentTokenInfo . token , tokenStart , parent , childContextNode , indentation ) ;
445+ if ( lineAdded !== undefined ) {
446+ indentToken = lineAdded ;
447+ }
448+ else {
449+ indentToken = tokenStart . line !== prevStartLine ;
450+ }
455451 }
456- }
457452
458- if ( currentTokenInfo . trailingTrivia ) {
459- processTrivia ( currentTokenInfo . trailingTrivia , parent , contextNode , indentation ) ;
460- }
453+ if ( currentTokenInfo . trailingTrivia ) {
454+ processTrivia ( currentTokenInfo . trailingTrivia , parent , childContextNode , indentation ) ;
455+ }
461456
462457
463- if ( lastTriviaWasNewLine && indentToken ) {
464- var indentNextTokenOrTrivia = true ;
465- if ( currentTokenInfo . leadingTrivia ) {
466- for ( var i = 0 , len = currentTokenInfo . leadingTrivia . length ; i < len ; ++ i ) {
467- var triviaItem = currentTokenInfo . leadingTrivia [ i ] ;
468- var triviaStartLine = sourceFile . getLineAndCharacterFromPosition ( triviaItem . pos ) . line ;
469- if ( rangeContainsRange ( originalRange , triviaItem ) ) {
470- switch ( triviaItem . kind ) {
471- case SyntaxKind . MultiLineCommentTrivia :
472- indentMultilineComment ( triviaItem , indentation . getCommentIndentation ( ) , /*firstLineIsIndented*/ ! indentNextTokenOrTrivia ) ;
473- indentNextTokenOrTrivia = false ;
474- break ;
475- case SyntaxKind . SingleLineCommentTrivia :
476- if ( indentNextTokenOrTrivia ) {
477- insertIndentation ( triviaItem . pos , indentation . getCommentIndentation ( ) , /*lineAdded*/ false ) ;
458+ if ( lastTriviaWasNewLine && indentToken ) {
459+ var indentNextTokenOrTrivia = true ;
460+ if ( currentTokenInfo . leadingTrivia ) {
461+ for ( var i = 0 , len = currentTokenInfo . leadingTrivia . length ; i < len ; ++ i ) {
462+ var triviaItem = currentTokenInfo . leadingTrivia [ i ] ;
463+ var triviaStartLine = sourceFile . getLineAndCharacterFromPosition ( triviaItem . pos ) . line ;
464+ if ( rangeContainsRange ( originalRange , triviaItem ) ) {
465+ switch ( triviaItem . kind ) {
466+ case SyntaxKind . MultiLineCommentTrivia :
467+ indentMultilineComment ( triviaItem , indentation . getCommentIndentation ( ) , /*firstLineIsIndented*/ ! indentNextTokenOrTrivia ) ;
478468 indentNextTokenOrTrivia = false ;
479- }
480- break ;
481- case SyntaxKind . NewLineTrivia :
482- indentNextTokenOrTrivia = true ;
483- break ;
469+ break ;
470+ case SyntaxKind . SingleLineCommentTrivia :
471+ if ( indentNextTokenOrTrivia ) {
472+ insertIndentation ( triviaItem . pos , indentation . getCommentIndentation ( ) , /*lineAdded*/ false ) ;
473+ indentNextTokenOrTrivia = false ;
474+ }
475+ break ;
476+ case SyntaxKind . NewLineTrivia :
477+ indentNextTokenOrTrivia = true ;
478+ break ;
479+ }
484480 }
485481 }
486482 }
483+ if ( isTokenInRange && ! rangeContainsError ( currentTokenInfo . token ) ) {
484+ insertIndentation ( currentTokenInfo . token . pos , indentation . getEffectiveIndentation ( tokenStart . line , currentTokenInfo . token . kind ) , lineAdded ) ;
485+ }
487486 }
488- if ( isTokenInRange && ! rangeContainsError ( currentTokenInfo . token ) ) {
489- insertIndentation ( currentTokenInfo . token . pos , indentation . getEffectiveIndentation ( tokenStart . line , currentTokenInfo . token . kind ) , lineAdded ) ;
490- }
491- }
492487
493- formattingScanner . advance ( ) ;
488+ formattingScanner . advance ( ) ;
489+
490+ childContextNode = parent ;
491+ }
494492 }
495493
496494 function processTrivia ( trivia : TextRangeWithKind [ ] , parent : Node , contextNode : Node , indentation : DynamicIndentation ) : void {
@@ -535,6 +533,7 @@ module ts.formatting {
535533 indentation : DynamicIndentation ) : boolean {
536534
537535 formattingContext . updateContext ( previousItem , previousParent , currentItem , currentParent , contextNode ) ;
536+
538537 var rule = rulesProvider . getRulesMap ( ) . GetRule ( formattingContext ) ;
539538
540539 var trimTrailingWhitespaces : boolean ;
@@ -640,8 +639,8 @@ module ts.formatting {
640639 var startLinePos = getStartPositionOfLine ( startLine , sourceFile ) ;
641640 var nonWhitespaceColumn =
642641 i === 0
643- ? nonWhitespaceColumnInFirstPart
644- : SmartIndenter . findFirstNonWhitespaceColumn ( parts [ i ] . pos , parts [ i ] . end , sourceFile , options ) ;
642+ ? nonWhitespaceColumnInFirstPart
643+ : SmartIndenter . findFirstNonWhitespaceColumn ( parts [ i ] . pos , parts [ i ] . end , sourceFile , options ) ;
645644
646645 var newIndentation = nonWhitespaceColumn + delta ;
647646 if ( newIndentation > 0 ) {
@@ -736,6 +735,7 @@ module ts.formatting {
736735 }
737736 }
738737 }
738+
739739 function isSomeBlock ( kind : SyntaxKind ) : boolean {
740740 switch ( kind ) {
741741 case SyntaxKind . Block :
@@ -745,9 +745,8 @@ module ts.formatting {
745745 case SyntaxKind . FinallyBlock :
746746 case SyntaxKind . ModuleBlock :
747747 return true ;
748- default :
749- return false ;
750748 }
749+ return false ;
751750 }
752751
753752 function shouldIndentChildNodes ( kind : SyntaxKind ) : boolean {
@@ -794,7 +793,12 @@ module ts.formatting {
794793 return SyntaxKind . OpenParenToken ;
795794 }
796795 break ;
796+ case SyntaxKind . TypeReference :
797+ if ( ( < TypeReferenceNode > node ) . typeArguments === list ) {
798+ return SyntaxKind . LessThanToken ;
799+ }
797800 }
801+
798802 return SyntaxKind . Unknown ;
799803 }
800804
@@ -804,8 +808,8 @@ module ts.formatting {
804808 return SyntaxKind . CloseParenToken ;
805809 case SyntaxKind . LessThanToken :
806810 return SyntaxKind . GreaterThanToken ;
807- default :
808- return SyntaxKind . Unknown ;
809811 }
812+
813+ return SyntaxKind . Unknown ;
810814 }
811815}
0 commit comments