Skip to content

Commit 76d341b

Browse files
author
Andy Hanson
committed
Respond to PR comments
1 parent bed5020 commit 76d341b

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

src/services/navigationBar.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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,19 +162,21 @@ 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[] = [];
167-
for (let node of nodes)
169+
for (const node of nodes) {
168170
addTopLevelNode(node, thisLevel);
169-
doSortNodes(thisLevel);
171+
}
172+
sortNodesInPlace(thisLevel);
170173

171-
for (let node of thisLevel)
174+
for (const node of thisLevel) {
172175
higherLevel.push(node);
176+
}
173177
}
174-
175-
function addTopLevelNode(node: Node, thisLevel: Node[]): void {
178+
179+
function addTopLevelNode(node: Node, thisLevel: Node[]): void {
176180
switch (node.kind) {
177181
case SyntaxKind.ClassExpression:
178182
case SyntaxKind.ClassDeclaration:
@@ -181,7 +185,7 @@ namespace ts.NavigationBar {
181185
if (member.kind === SyntaxKind.MethodDeclaration || member.kind === SyntaxKind.Constructor) {
182186
type FunctionLikeMember = MethodDeclaration | ConstructorDeclaration;
183187
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.
185189
if (hasNamedFunctionDeclarations((<Block>(<FunctionLikeMember>member).body).statements)) {
186190
thisLevel.push(member);
187191
}

0 commit comments

Comments
 (0)