@@ -3759,45 +3759,41 @@ module ts {
37593759
37603760 function getBraceMatchingAtPosition ( filename : string , position : number ) {
37613761 var sourceFile = getCurrentSourceFile ( filename ) ;
3762- return getMatchSpans ( sourceFile , position ) ;
3762+ var result : TypeScript . TextSpan [ ] = [ ] ;
37633763
3764- function getMatchSpans ( sourceFile : SourceFile , position : number ) : TypeScript . TextSpan [ ] {
3765- var result : TypeScript . TextSpan [ ] = [ ] ;
3764+ var token = getTokenAtPosition ( sourceFile , position ) ;
37663765
3767- var token = getTokenAtPosition ( sourceFile , position ) ;
3766+ if ( token . getStart ( sourceFile ) === position ) {
3767+ var matchKind = getMatchingTokenKind ( token ) ;
37683768
3769- if ( token . getStart ( sourceFile ) === position ) {
3770- var matchKind = getMatchingTokenKind ( token ) ;
3769+ // Ensure that there is a corresponding token to match ours.
3770+ if ( matchKind ) {
3771+ var parentElement = token . parent ;
37713772
3772- // Ensure that there is a corresponding token to match ours.
3773- if ( matchKind ) {
3774- var parentElement = token . parent ;
3773+ var childNodes = parentElement . getChildren ( sourceFile ) ;
3774+ for ( var i = 0 , n = childNodes . length ; i < n ; i ++ ) {
3775+ var current = childNodes [ i ] ;
37753776
3776- var childNodes = parentElement . getChildren ( sourceFile ) ;
3777- for ( var i = 0 , n = childNodes . length ; i < n ; i ++ ) {
3778- var current = childNodes [ i ] ;
3777+ if ( current . kind === matchKind ) {
3778+ var range1 = new TypeScript . TextSpan ( token . getStart ( sourceFile ) , token . getWidth ( sourceFile ) ) ;
3779+ var range2 = new TypeScript . TextSpan ( current . getStart ( sourceFile ) , current . getWidth ( sourceFile ) ) ;
37793780
3780- if ( current . kind === matchKind ) {
3781- var range1 = new TypeScript . TextSpan ( token . getStart ( sourceFile ) , token . getWidth ( sourceFile ) ) ;
3782- var range2 = new TypeScript . TextSpan ( current . getStart ( sourceFile ) , current . getWidth ( sourceFile ) ) ;
3783-
3784- // We want to order the braces when we return the result.
3785- if ( range1 . start ( ) < range2 . start ( ) ) {
3786- result . push ( range1 , range2 ) ;
3787- }
3788- else {
3789- result . push ( range2 , range1 ) ;
3790- }
3791-
3792- break ;
3781+ // We want to order the braces when we return the result.
3782+ if ( range1 . start ( ) < range2 . start ( ) ) {
3783+ result . push ( range1 , range2 ) ;
3784+ }
3785+ else {
3786+ result . push ( range2 , range1 ) ;
37933787 }
3788+
3789+ break ;
37943790 }
37953791 }
37963792 }
3797-
3798- return result ;
37993793 }
38003794
3795+ return result ;
3796+
38013797 function getMatchingTokenKind ( token : Node ) : ts . SyntaxKind {
38023798 switch ( token . kind ) {
38033799 case ts . SyntaxKind . OpenBraceToken : return ts . SyntaxKind . CloseBraceToken
0 commit comments