@@ -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,14 +162,14 @@ 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
169
for ( const node of nodes ) {
168
170
addTopLevelNode ( node , thisLevel ) ;
169
171
}
170
- doSortNodes ( thisLevel ) ;
172
+ sortNodesInPlace ( thisLevel ) ;
171
173
172
174
for ( const node of thisLevel ) {
173
175
higherLevel . push ( node ) ;
@@ -183,7 +185,7 @@ namespace ts.NavigationBar {
183
185
if ( member . kind === SyntaxKind . MethodDeclaration || member . kind === SyntaxKind . Constructor ) {
184
186
type FunctionLikeMember = MethodDeclaration | ConstructorDeclaration ;
185
187
if ( ( < FunctionLikeMember > member ) . body ) {
186
- // 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.
187
189
if ( hasNamedFunctionDeclarations ( ( < Block > ( < FunctionLikeMember > member ) . body ) . statements ) ) {
188
190
thisLevel . push ( member ) ;
189
191
}
0 commit comments