@@ -4,25 +4,13 @@ namespace ts.OutliningElementsCollector {
44 const elements : OutliningSpan [ ] = [ ] ;
55 const collapseText = "..." ;
66
7- function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean ) {
7+ function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean , fullStart : boolean ) {
88 if ( hintSpanNode && startElement && endElement ) {
99 const span : OutliningSpan = {
10- textSpan : createTextSpanFromBounds ( startElement . pos , endElement . end ) ,
11- hintSpan : createTextSpanFromNode ( hintSpanNode , sourceFile ) ,
12- bannerText : collapseText ,
13- autoCollapse,
14- } ;
15- elements . push ( span ) ;
16- }
17- }
18-
19- function addOutliningForObjectLiteralsInArray ( startElement : Node , endElement : Node , autoCollapse : boolean ) {
20- if ( startElement && endElement ) {
21- const span : OutliningSpan = {
22- textSpan : createTextSpanFromBounds ( startElement . getStart ( ) , endElement . end ) ,
10+ textSpan : createTextSpanFromBounds ( fullStart ? startElement . pos : startElement . getStart ( ) , endElement . end ) ,
2311 hintSpan : createTextSpanFromBounds ( startElement . getStart ( ) , endElement . end ) ,
2412 bannerText : collapseText ,
25- autoCollapse
13+ autoCollapse,
2614 } ;
2715 elements . push ( span ) ;
2816 }
@@ -125,21 +113,21 @@ namespace ts.OutliningElementsCollector {
125113 parent . kind === SyntaxKind . WithStatement ||
126114 parent . kind === SyntaxKind . CatchClause ) {
127115
128- addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
116+ addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
129117 break ;
130118 }
131119
132120 if ( parent . kind === SyntaxKind . TryStatement ) {
133121 // Could be the try-block, or the finally-block.
134122 const tryStatement = < TryStatement > parent ;
135123 if ( tryStatement . tryBlock === n ) {
136- addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
124+ addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
137125 break ;
138126 }
139127 else if ( tryStatement . finallyBlock === n ) {
140128 const finallyKeyword = findChildOfKind ( tryStatement , SyntaxKind . FinallyKeyword , sourceFile ) ;
141129 if ( finallyKeyword ) {
142- addOutliningSpan ( finallyKeyword , openBrace , closeBrace , autoCollapse ( n ) ) ;
130+ addOutliningSpan ( finallyKeyword , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
143131 break ;
144132 }
145133 }
@@ -163,27 +151,27 @@ namespace ts.OutliningElementsCollector {
163151 case SyntaxKind . ModuleBlock : {
164152 const openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
165153 const closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
166- addOutliningSpan ( n . parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
154+ addOutliningSpan ( n . parent , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
167155 break ;
168156 }
169157 case SyntaxKind . ClassDeclaration :
170158 case SyntaxKind . InterfaceDeclaration :
171159 case SyntaxKind . EnumDeclaration :
172- case SyntaxKind . ObjectLiteralExpression :
173160 case SyntaxKind . CaseBlock : {
174161 const openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
175162 const closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
176- if ( n . kind === SyntaxKind . ObjectLiteralExpression && n . parent . kind === SyntaxKind . ArrayLiteralExpression ) {
177- addOutliningForObjectLiteralsInArray ( openBrace , closeBrace , autoCollapse ( n ) ) ;
178- break ;
179- }
180- addOutliningSpan ( n , openBrace , closeBrace , autoCollapse ( n ) ) ;
163+ addOutliningSpan ( n , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
181164 break ;
182165 }
166+ case SyntaxKind . ObjectLiteralExpression :
167+ const openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
168+ const closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
169+ addOutliningSpan ( n , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ n . parent . kind !== SyntaxKind . ArrayLiteralExpression ) ;
170+ break ;
183171 case SyntaxKind . ArrayLiteralExpression :
184172 const openBracket = findChildOfKind ( n , SyntaxKind . OpenBracketToken , sourceFile ) ;
185173 const closeBracket = findChildOfKind ( n , SyntaxKind . CloseBracketToken , sourceFile ) ;
186- addOutliningSpan ( n , openBracket , closeBracket , autoCollapse ( n ) ) ;
174+ addOutliningSpan ( n , openBracket , closeBracket , autoCollapse ( n ) , /* fullStart */ n . parent . kind !== SyntaxKind . ArrayLiteralExpression ) ;
187175 break ;
188176 }
189177 depth ++ ;
0 commit comments