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