From dbd30542a6a7ecdb3b6a2594a353bb91d0bbcdd7 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 25 May 2016 07:16:23 -0700 Subject: [PATCH 1/2] Include classes as childItems in navigation bar --- src/services/navigationBar.ts | 3 +++ tests/cases/fourslash/navbar_contains-no-duplicates.ts | 4 ++-- .../navigationBarItemsBindingPatternsInConstructor.ts | 2 +- .../cases/fourslash/navigationBarItemsEmptyConstructors.ts | 2 +- .../navigationBarItemsInsideMethodsAndConstructors.ts | 2 +- tests/cases/fourslash/navigationBarItemsItems.ts | 4 ++-- .../fourslash/navigationBarItemsItemsExternalModules.ts | 4 ++-- .../fourslash/navigationBarItemsItemsExternalModules2.ts | 4 ++-- .../fourslash/navigationBarItemsItemsExternalModules3.ts | 4 ++-- tests/cases/fourslash/navigationBarItemsMissingName1.ts | 6 +++--- .../navigationBarItemsMultilineStringIdentifiers.ts | 4 ++-- .../navigationBarItemsPropertiesDefinedInConstructors.ts | 2 +- tests/cases/fourslash/navigationBarItemsSymbols1.ts | 5 +++-- tests/cases/fourslash/server/navbar01.ts | 4 ++-- 14 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index cb81c398cb86d..f05f3f3a6e681 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -330,6 +330,9 @@ namespace ts.NavigationBar { case SyntaxKind.PropertySignature: return createItem(node, getTextOfNode((node).name), ts.ScriptElementKind.memberVariableElement); + case SyntaxKind.ClassDeclaration: + return createItem(node, getTextOfNode((node).name), ts.ScriptElementKind.classElement); + case SyntaxKind.FunctionDeclaration: return createItem(node, getTextOfNode((node).name), ts.ScriptElementKind.functionElement); diff --git a/tests/cases/fourslash/navbar_contains-no-duplicates.ts b/tests/cases/fourslash/navbar_contains-no-duplicates.ts index ec86e4b2f201a..a698e5b0f0e5e 100644 --- a/tests/cases/fourslash/navbar_contains-no-duplicates.ts +++ b/tests/cases/fourslash/navbar_contains-no-duplicates.ts @@ -2,7 +2,7 @@ //// {| "itemName": "Windows", "kind": "module", "parentName": "" |}declare module Windows { //// {| "itemName": "Foundation", "kind": "module", "parentName": "" |}export module Foundation { //// export var {| "itemName": "A", "kind": "var" |}A; -//// {| "itemName": "Test", "kind": "class" |}export class Test { +//// {| "itemName": "Test", "kind": "class", "parentName": "Foundation" |}export class Test { //// {| "itemName": "wow", "kind": "method" |}public wow(); //// } //// } @@ -38,4 +38,4 @@ test.markers().forEach(marker => { marker.position); } }); -verify.navigationBarCount(12); \ No newline at end of file +verify.navigationBarCount(15); \ No newline at end of file diff --git a/tests/cases/fourslash/navigationBarItemsBindingPatternsInConstructor.ts b/tests/cases/fourslash/navigationBarItemsBindingPatternsInConstructor.ts index 84c1d09efe7fb..24979e141e541 100644 --- a/tests/cases/fourslash/navigationBarItemsBindingPatternsInConstructor.ts +++ b/tests/cases/fourslash/navigationBarItemsBindingPatternsInConstructor.ts @@ -11,4 +11,4 @@ //// } ////} -verify.navigationBarCount(6); // 2x(class + field + constructor) +verify.navigationBarCount(9); // global + 2 children + 2x(class + field + constructor) diff --git a/tests/cases/fourslash/navigationBarItemsEmptyConstructors.ts b/tests/cases/fourslash/navigationBarItemsEmptyConstructors.ts index 2255d29e293b8..a80f4c596d49e 100644 --- a/tests/cases/fourslash/navigationBarItemsEmptyConstructors.ts +++ b/tests/cases/fourslash/navigationBarItemsEmptyConstructors.ts @@ -9,4 +9,4 @@ verify.navigationBarContains("Test", "class"); verify.navigationBarContains("constructor", "constructor"); // no other items -verify.navigationBarCount(2); \ No newline at end of file +verify.navigationBarCount(4); // global + 1 child, Test + 1 child \ No newline at end of file diff --git a/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts b/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts index 89b05dc6b0777..3d2c026d36078 100644 --- a/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts +++ b/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts @@ -39,4 +39,4 @@ test.markers().forEach((marker) => { }); // no other items -verify.navigationBarCount(19); +verify.navigationBarCount(21); diff --git a/tests/cases/fourslash/navigationBarItemsItems.ts b/tests/cases/fourslash/navigationBarItemsItems.ts index 5cae68b11945a..95fdecd369c27 100644 --- a/tests/cases/fourslash/navigationBarItemsItems.ts +++ b/tests/cases/fourslash/navigationBarItemsItems.ts @@ -13,7 +13,7 @@ ////{| "itemName": "Shapes", "kind": "module", "parentName": "" |}module Shapes { //// //// // Class -//// {| "itemName": "Point", "kind": "class", "parentName": "" |}export class Point implements IPoint { +//// {| "itemName": "Point", "kind": "class", "parentName": "Shapes" |}export class Point implements IPoint { //// {| "itemName": "constructor", "kind": "constructor", "parentName": "Point" |}constructor (public x: number, public y: number) { } //// //// // Instance member @@ -49,4 +49,4 @@ test.markers().forEach((marker) => { } }); -verify.navigationBarCount(24); +verify.navigationBarCount(25); diff --git a/tests/cases/fourslash/navigationBarItemsItemsExternalModules.ts b/tests/cases/fourslash/navigationBarItemsItemsExternalModules.ts index 64a595cafb19e..7b2e0def4bf2b 100644 --- a/tests/cases/fourslash/navigationBarItemsItemsExternalModules.ts +++ b/tests/cases/fourslash/navigationBarItemsItemsExternalModules.ts @@ -1,6 +1,6 @@ /// -////{| "itemName": "Bar", "kind": "class" |}export class Bar { +////{| "itemName": "Bar", "kind": "class", "parentName": "\"navigationBarItemsItemsExternalModules\"" |}export class Bar { //// {| "itemName": "s", "kind": "property", "parentName": "Bar" |}public s: string; ////} @@ -8,4 +8,4 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(2); // external module node + class + property +verify.navigationBarCount(4); // external module node + class + property diff --git a/tests/cases/fourslash/navigationBarItemsItemsExternalModules2.ts b/tests/cases/fourslash/navigationBarItemsItemsExternalModules2.ts index 7c1c32cff7645..9087493b298b4 100644 --- a/tests/cases/fourslash/navigationBarItemsItemsExternalModules2.ts +++ b/tests/cases/fourslash/navigationBarItemsItemsExternalModules2.ts @@ -1,7 +1,7 @@ /// // @Filename: test/file.ts -////{| "itemName": "Bar", "kind": "class" |}export class Bar { +////{| "itemName": "Bar", "kind": "class", "parentName": "\"file\"" |}export class Bar { //// {| "itemName": "s", "kind": "property", "parentName": "Bar" |}public s: string; ////} ////{| "itemName": "\"file\"", "kind": "module" |} @@ -12,4 +12,4 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(4); // external module node + variable in module + class + property +verify.navigationBarCount(5); // external module node + variable in module + class + property diff --git a/tests/cases/fourslash/navigationBarItemsItemsExternalModules3.ts b/tests/cases/fourslash/navigationBarItemsItemsExternalModules3.ts index 6e6dc9871cc48..a00b3a131dd10 100644 --- a/tests/cases/fourslash/navigationBarItemsItemsExternalModules3.ts +++ b/tests/cases/fourslash/navigationBarItemsItemsExternalModules3.ts @@ -1,7 +1,7 @@ /// // @Filename: test/my fil"e.ts -////{| "itemName": "Bar", "kind": "class" |}export class Bar { +////{| "itemName": "Bar", "kind": "class", "parentName": "\"my fil\\\"e\"" |}export class Bar { //// {| "itemName": "s", "kind": "property", "parentName": "Bar" |}public s: string; ////} ////{| "itemName": "\"my fil\\\"e\"", "kind": "module" |} @@ -12,4 +12,4 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(4); // external module node + variable in module + class + property +verify.navigationBarCount(5); // external module node + 2 children + class + property diff --git a/tests/cases/fourslash/navigationBarItemsMissingName1.ts b/tests/cases/fourslash/navigationBarItemsMissingName1.ts index 98321039c5af9..59f2911f3aaa7 100644 --- a/tests/cases/fourslash/navigationBarItemsMissingName1.ts +++ b/tests/cases/fourslash/navigationBarItemsMissingName1.ts @@ -2,7 +2,7 @@ /////** //// * This is a class. //// */ -////{| "itemName": "C", "kind": "class" |} class C { +////{| "itemName": "C", "kind": "class", "parentName": "\"navigationBarItemsMissingName1\"" |} class C { //// {| "itemName": "foo", "kind": "method" |} foo() { //// } ////} @@ -12,5 +12,5 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -/// Only have two named elements. -verify.navigationBarCount(2); +/// Root + 1 child, class + 1 child +verify.navigationBarCount(4); diff --git a/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts b/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts index 8856c4c044a34..54524436d400f 100644 --- a/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts +++ b/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts @@ -20,7 +20,7 @@ //// b"(): Foo; ////} //// -////{| "itemName": "Bar", "kind": "class" |} +////{| "itemName": "Bar", "kind": "class", "parentName": "" |} ////class Bar implements Foo { //// {| "itemName": "'a1\\\\\\r\\nb'", "kind": "property", "parentName": "Bar" |} //// 'a1\\\r\nb': Foo; @@ -38,4 +38,4 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(9); // interface w/ 2 properties, class w/ 2 properties, 3 modules \ No newline at end of file +verify.navigationBarCount(11); // global + 1 child, interface w/ 2 properties, class w/ 2 properties, 3 modules \ No newline at end of file diff --git a/tests/cases/fourslash/navigationBarItemsPropertiesDefinedInConstructors.ts b/tests/cases/fourslash/navigationBarItemsPropertiesDefinedInConstructors.ts index 9b3f4aacd9cdc..8e1981f6101c1 100644 --- a/tests/cases/fourslash/navigationBarItemsPropertiesDefinedInConstructors.ts +++ b/tests/cases/fourslash/navigationBarItemsPropertiesDefinedInConstructors.ts @@ -12,4 +12,4 @@ verify.navigationBarContains("a", "property"); verify.navigationBarContains("b", "property"); // no other items -verify.navigationBarCount(4); \ No newline at end of file +verify.navigationBarCount(6); \ No newline at end of file diff --git a/tests/cases/fourslash/navigationBarItemsSymbols1.ts b/tests/cases/fourslash/navigationBarItemsSymbols1.ts index c9df85b3ece49..6d55812fa0e29 100644 --- a/tests/cases/fourslash/navigationBarItemsSymbols1.ts +++ b/tests/cases/fourslash/navigationBarItemsSymbols1.ts @@ -1,6 +1,6 @@ /// -////{| "itemName": "C", "kind": "class", "parentName": "" |} +////{| "itemName": "C", "kind": "class", "parentName": "" |} ////class C { //// {| "itemName": "[Symbol.isRegExp]", "kind": "property", "parentName": "C" |} //// [Symbol.isRegExp] = 0; @@ -14,4 +14,5 @@ test.markers().forEach(marker => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(test.markers().length); \ No newline at end of file +// 2 lack markers: and its child +verify.navigationBarCount(2 + test.markers().length); \ No newline at end of file diff --git a/tests/cases/fourslash/server/navbar01.ts b/tests/cases/fourslash/server/navbar01.ts index e4e2b699be5f3..ead4cafe0c83b 100644 --- a/tests/cases/fourslash/server/navbar01.ts +++ b/tests/cases/fourslash/server/navbar01.ts @@ -13,7 +13,7 @@ ////{| "itemName": "Shapes", "kind": "module", "parentName": "" |}module Shapes { //// //// // Class -//// {| "itemName": "Point", "kind": "class", "parentName": "" |}export class Point implements IPoint { +//// {| "itemName": "Point", "kind": "class", "parentName": "Shapes" |}export class Point implements IPoint { //// {| "itemName": "constructor", "kind": "constructor", "parentName": "Point" |}constructor (public x: number, public y: number) { } //// //// // Instance member @@ -49,4 +49,4 @@ test.markers().forEach((marker) => { } }); -verify.navigationBarCount(24); +verify.navigationBarCount(25); From 5c23b3bc20ea043e2022487a211364bfa7d320c2 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Thu, 26 May 2016 06:04:42 -0700 Subject: [PATCH 2/2] Fix more tests --- tests/cases/fourslash/getNavigationBarItems.ts | 2 +- .../fourslash/navigationBarItemsMultilineStringIdentifiers.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/cases/fourslash/getNavigationBarItems.ts b/tests/cases/fourslash/getNavigationBarItems.ts index 8e9b8de5b051c..cd09f61011e97 100644 --- a/tests/cases/fourslash/getNavigationBarItems.ts +++ b/tests/cases/fourslash/getNavigationBarItems.ts @@ -5,7 +5,7 @@ //// ["bar"]: string; ////} -verify.navigationBarCount(3); +verify.navigationBarCount(5); verify.navigationBarContains("C", "class"); verify.navigationBarChildItem("C", "[\"bar\"]", "property"); verify.navigationBarChildItem("C", "foo", "property"); diff --git a/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts b/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts index 681039d174ad0..4e7c715e6cd9f 100644 --- a/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts +++ b/tests/cases/fourslash/navigationBarItemsMultilineStringIdentifiers.ts @@ -38,4 +38,4 @@ test.markers().forEach((marker) => { verify.navigationBarContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); }); -verify.navigationBarCount(11); // global + 1 child, interface w/ 2 properties, class w/ 2 properties, 3 modules +verify.navigationBarCount(12); // global + 1 child, interface w/ 2 properties, class w/ 2 properties, 3 modules