From b85f34ba59bafa443a8f97b3fee7c202f1c488c4 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 19 Apr 2016 19:30:11 -0700 Subject: [PATCH] Fix #8162 and #8173: Add root symbols to search in find all referecnes --- src/services/services.ts | 2 +- .../fourslash/referencesForClassMembers.ts | 32 +++++++++++++++++++ ...esForClassMembersExtendingAbstractClass.ts | 32 +++++++++++++++++++ ...cesForClassMembersExtendingGenericClass.ts | 32 +++++++++++++++++++ .../referencesForInheritedProperties6.ts | 6 ++-- .../referencesForInheritedProperties7.ts | 6 ++-- 6 files changed, 103 insertions(+), 7 deletions(-) create mode 100644 tests/cases/fourslash/referencesForClassMembers.ts create mode 100644 tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts create mode 100644 tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts diff --git a/src/services/services.ts b/src/services/services.ts index 333baaec637..d26222d636b 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -6286,7 +6286,7 @@ namespace ts { if (type) { const propertySymbol = typeChecker.getPropertyOfType(type, propertyName); if (propertySymbol) { - result.push(propertySymbol); + result.push(...typeChecker.getRootSymbols(propertySymbol)); } // Visit the typeReference as well to see if it directly or indirectly use that property diff --git a/tests/cases/fourslash/referencesForClassMembers.ts b/tests/cases/fourslash/referencesForClassMembers.ts new file mode 100644 index 00000000000..851c1b39ab0 --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembers.ts @@ -0,0 +1,32 @@ +/// + +////class Base { +//// /*1*/a: number; +//// /*2*/method(): void { } +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts new file mode 100644 index 00000000000..fcabff979fb --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts @@ -0,0 +1,32 @@ +/// + +////abstract class Base { +//// abstract /*1*/a: number; +//// abstract /*2*/method(): void; +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts new file mode 100644 index 00000000000..f0185fb39aa --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts @@ -0,0 +1,32 @@ +/// + +////class Base { +//// /*1*/a: this; +//// /*2*/method(a?:T, b?:U): this { } +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForInheritedProperties6.ts b/tests/cases/fourslash/referencesForInheritedProperties6.ts index de6a2f2eba1..ddd52447dc1 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties6.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties6.ts @@ -14,13 +14,13 @@ //// v./*6*/doStuff(); goTo.marker("1"); -verify.referencesCountIs(1); +verify.referencesCountIs(3); goTo.marker("2"); verify.referencesCountIs(3); goTo.marker("3"); -verify.referencesCountIs(2); +verify.referencesCountIs(3); goTo.marker("4"); verify.referencesCountIs(3); @@ -29,4 +29,4 @@ goTo.marker("5"); verify.referencesCountIs(3); goTo.marker("6"); -verify.referencesCountIs(2); \ No newline at end of file +verify.referencesCountIs(3); \ No newline at end of file diff --git a/tests/cases/fourslash/referencesForInheritedProperties7.ts b/tests/cases/fourslash/referencesForInheritedProperties7.ts index 000d4922222..5747e99615f 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties7.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties7.ts @@ -18,7 +18,7 @@ //// v./*8*/doStuff(); goTo.marker("1"); -verify.referencesCountIs(1); +verify.referencesCountIs(3); goTo.marker("2"); verify.referencesCountIs(3); @@ -30,7 +30,7 @@ goTo.marker("4"); verify.referencesCountIs(3); goTo.marker("5"); -verify.referencesCountIs(3); +verify.referencesCountIs(4); goTo.marker("6"); verify.referencesCountIs(4); @@ -39,4 +39,4 @@ goTo.marker("7"); verify.referencesCountIs(4); goTo.marker("8"); -verify.referencesCountIs(3); \ No newline at end of file +verify.referencesCountIs(4); \ No newline at end of file