@@ -4,25 +4,13 @@ namespace ts.OutliningElementsCollector {
4
4
const elements : OutliningSpan [ ] = [ ] ;
5
5
const collapseText = "..." ;
6
6
7
- function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean ) {
7
+ function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean , fullStart : boolean ) {
8
8
if ( hintSpanNode && startElement && endElement ) {
9
9
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 ) ,
23
11
hintSpan : createTextSpanFromBounds ( startElement . getStart ( ) , endElement . end ) ,
24
12
bannerText : collapseText ,
25
- autoCollapse
13
+ autoCollapse,
26
14
} ;
27
15
elements . push ( span ) ;
28
16
}
@@ -125,21 +113,21 @@ namespace ts.OutliningElementsCollector {
125
113
parent . kind === SyntaxKind . WithStatement ||
126
114
parent . kind === SyntaxKind . CatchClause ) {
127
115
128
- addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
116
+ addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
129
117
break ;
130
118
}
131
119
132
120
if ( parent . kind === SyntaxKind . TryStatement ) {
133
121
// Could be the try-block, or the finally-block.
134
122
const tryStatement = < TryStatement > parent ;
135
123
if ( tryStatement . tryBlock === n ) {
136
- addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
124
+ addOutliningSpan ( parent , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
137
125
break ;
138
126
}
139
127
else if ( tryStatement . finallyBlock === n ) {
140
128
const finallyKeyword = findChildOfKind ( tryStatement , SyntaxKind . FinallyKeyword , sourceFile ) ;
141
129
if ( finallyKeyword ) {
142
- addOutliningSpan ( finallyKeyword , openBrace , closeBrace , autoCollapse ( n ) ) ;
130
+ addOutliningSpan ( finallyKeyword , openBrace , closeBrace , autoCollapse ( n ) , /* fullStart */ true ) ;
143
131
break ;
144
132
}
145
133
}
@@ -163,27 +151,27 @@ namespace ts.OutliningElementsCollector {
163
151
case SyntaxKind . ModuleBlock : {
164
152
const openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
165
153
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 ) ;
167
155
break ;
168
156
}
169
157
case SyntaxKind . ClassDeclaration :
170
158
case SyntaxKind . InterfaceDeclaration :
171
159
case SyntaxKind . EnumDeclaration :
172
- case SyntaxKind . ObjectLiteralExpression :
173
160
case SyntaxKind . CaseBlock : {
174
161
const openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
175
162
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 ) ;
181
164
break ;
182
165
}
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 ;
183
171
case SyntaxKind . ArrayLiteralExpression :
184
172
const openBracket = findChildOfKind ( n , SyntaxKind . OpenBracketToken , sourceFile ) ;
185
173
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 ) ;
187
175
break ;
188
176
}
189
177
depth ++ ;
0 commit comments