@@ -139,19 +139,21 @@ namespace ts.NavigationBar {
139
139
140
140
function sortNodes ( nodes : Node [ ] ) : Node [ ] {
141
141
const sortedCopy = nodes . slice ( 0 ) ;
142
- doSortNodes ( sortedCopy ) ;
142
+ sortNodesInPlace ( sortedCopy ) ;
143
143
return sortedCopy ;
144
144
}
145
145
146
- function doSortNodes ( nodes : Node [ ] ) : void {
147
- nodes . sort ( ( n1 : Declaration , n2 : Declaration ) => {
148
- if ( n1 . name && n2 . name ) {
149
- return getPropertyNameForPropertyNameNode ( n1 . name ) . localeCompare ( getPropertyNameForPropertyNameNode ( n2 . name ) ) ;
146
+ function sortNodesInPlace ( nodes : Node [ ] ) : void {
147
+ nodes . sort ( ( n1 , n2 ) => {
148
+ // Get the name if it exists. OK if node is not a declaration.
149
+ const name1 = ( < Declaration > n1 ) . name , name2 = ( < Declaration > n2 ) . name ;
150
+ if ( name1 && name2 ) {
151
+ return getPropertyNameForPropertyNameNode ( name1 ) . localeCompare ( getPropertyNameForPropertyNameNode ( name2 ) ) ;
150
152
}
151
- else if ( n1 . name ) {
153
+ else if ( name1 ) {
152
154
return 1 ;
153
155
}
154
- else if ( n2 . name ) {
156
+ else if ( name2 ) {
155
157
return - 1 ;
156
158
}
157
159
else {
@@ -160,19 +162,21 @@ namespace ts.NavigationBar {
160
162
} ) ;
161
163
}
162
164
163
- // Add nodes in a single "level" of top-level nodes (as in, methods in a class.)
165
+ // Add nodes in a single "level" of top-level nodes (e.g. methods in a class.)
164
166
// Nodes in a single "level" are sorted together.
165
167
function addTopLevelNodes ( nodes : Node [ ] , higherLevel : Node [ ] ) : void {
166
168
const thisLevel : Node [ ] = [ ] ;
167
- for ( let node of nodes )
169
+ for ( const node of nodes ) {
168
170
addTopLevelNode ( node , thisLevel ) ;
169
- doSortNodes ( thisLevel ) ;
171
+ }
172
+ sortNodesInPlace ( thisLevel ) ;
170
173
171
- for ( let node of thisLevel )
174
+ for ( const node of thisLevel ) {
172
175
higherLevel . push ( node ) ;
176
+ }
173
177
}
174
-
175
- function addTopLevelNode ( node : Node , thisLevel : Node [ ] ) : void {
178
+
179
+ function addTopLevelNode ( node : Node , thisLevel : Node [ ] ) : void {
176
180
switch ( node . kind ) {
177
181
case SyntaxKind . ClassExpression :
178
182
case SyntaxKind . ClassDeclaration :
@@ -181,7 +185,7 @@ namespace ts.NavigationBar {
181
185
if ( member . kind === SyntaxKind . MethodDeclaration || member . kind === SyntaxKind . Constructor ) {
182
186
type FunctionLikeMember = MethodDeclaration | ConstructorDeclaration ;
183
187
if ( ( < FunctionLikeMember > member ) . body ) {
184
- // We do not include methods that does not have child functions in it , because of duplications.
188
+ // We do not include methods that do not have child functions in them , because of duplications.
185
189
if ( hasNamedFunctionDeclarations ( ( < Block > ( < FunctionLikeMember > member ) . body ) . statements ) ) {
186
190
thisLevel . push ( member ) ;
187
191
}
0 commit comments