@@ -139,19 +139,21 @@ namespace ts.NavigationBar {
139139
140140 function sortNodes ( nodes : Node [ ] ) : Node [ ] {
141141 const sortedCopy = nodes . slice ( 0 ) ;
142- doSortNodes ( sortedCopy ) ;
142+ sortNodesInPlace ( sortedCopy ) ;
143143 return sortedCopy ;
144144 }
145145
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 ) ) ;
150152 }
151- else if ( n1 . name ) {
153+ else if ( name1 ) {
152154 return 1 ;
153155 }
154- else if ( n2 . name ) {
156+ else if ( name2 ) {
155157 return - 1 ;
156158 }
157159 else {
@@ -160,14 +162,14 @@ namespace ts.NavigationBar {
160162 } ) ;
161163 }
162164
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.)
164166 // Nodes in a single "level" are sorted together.
165167 function addTopLevelNodes ( nodes : Node [ ] , higherLevel : Node [ ] ) : void {
166168 const thisLevel : Node [ ] = [ ] ;
167169 for ( const node of nodes ) {
168170 addTopLevelNode ( node , thisLevel ) ;
169171 }
170- doSortNodes ( thisLevel ) ;
172+ sortNodesInPlace ( thisLevel ) ;
171173
172174 for ( const node of thisLevel ) {
173175 higherLevel . push ( node ) ;
@@ -183,7 +185,7 @@ namespace ts.NavigationBar {
183185 if ( member . kind === SyntaxKind . MethodDeclaration || member . kind === SyntaxKind . Constructor ) {
184186 type FunctionLikeMember = MethodDeclaration | ConstructorDeclaration ;
185187 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.
187189 if ( hasNamedFunctionDeclarations ( ( < Block > ( < FunctionLikeMember > member ) . body ) . statements ) ) {
188190 thisLevel . push ( member ) ;
189191 }
0 commit comments