diff --git a/tests/cases/fourslash/documentHighlightAtInheritedProperties5.ts b/tests/cases/fourslash/documentHighlightAtInheritedProperties5.ts
new file mode 100644
index 00000000000..b5f4cbb00a7
--- /dev/null
+++ b/tests/cases/fourslash/documentHighlightAtInheritedProperties5.ts
@@ -0,0 +1,30 @@
+///
+
+// @Filename: file1.ts
+//// interface C extends D {
+//// /*0*/prop0: string;
+//// /*1*/prop1: number;
+//// }
+////
+//// interface D extends C {
+//// /*2*/prop0: string;
+//// /*3*/prop1: number;
+//// }
+////
+//// var d: D;
+//// d./*4*/prop1;
+
+goTo.marker("0");
+verify.documentHighlightsAtPositionCount(2, ["file1.ts"]);
+
+goTo.marker("1");
+verify.documentHighlightsAtPositionCount(3, ["file1.ts"]);
+
+goTo.marker("2");
+verify.documentHighlightsAtPositionCount(2, ["file1.ts"]);
+
+goTo.marker("3");
+verify.documentHighlightsAtPositionCount(3, ["file1.ts"]);
+
+goTo.marker("4");
+verify.documentHighlightsAtPositionCount(3, ["file1.ts"]);
\ No newline at end of file
diff --git a/tests/cases/fourslash/documentHighlightAtInheritedProperties6.ts b/tests/cases/fourslash/documentHighlightAtInheritedProperties6.ts
new file mode 100644
index 00000000000..8f1089e567d
--- /dev/null
+++ b/tests/cases/fourslash/documentHighlightAtInheritedProperties6.ts
@@ -0,0 +1,30 @@
+///
+
+// @Filename: file1.ts
+//// class C extends D {
+//// /*0*/prop0: string;
+//// /*1*/prop1: string;
+//// }
+////
+//// class D extends C {
+//// /*2*/prop0: string;
+//// /*3*/prop1: string;
+//// }
+////
+//// var d: D;
+//// d./*4*/prop1;
+
+goTo.marker("0");
+verify.documentHighlightsAtPositionCount(1, ["file1.ts"]);
+
+goTo.marker("1");
+verify.documentHighlightsAtPositionCount(1, ["file1.ts"]);
+
+goTo.marker("2");
+verify.documentHighlightsAtPositionCount(1, ["file1.ts"]);
+
+goTo.marker("3");
+verify.documentHighlightsAtPositionCount(2, ["file1.ts"]);
+
+goTo.marker("4");
+verify.documentHighlightsAtPositionCount(2, ["file1.ts"]);
\ No newline at end of file
diff --git a/tests/cases/fourslash/findAllRefsInheritedProperties4.ts b/tests/cases/fourslash/findAllRefsInheritedProperties4.ts
new file mode 100644
index 00000000000..bcd41331f73
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsInheritedProperties4.ts
@@ -0,0 +1,30 @@
+///
+
+//// interface C extends D {
+//// [|prop0|]: string; // r0
+//// [|prop1|]: number; // r1
+//// }
+////
+//// interface D extends C {
+//// [|prop0|]: string; // r2
+//// }
+////
+//// var d: D;
+//// d.[|prop0|]; // r3
+//// d.[|prop1|]; // r4
+
+function verifyReferences(query: FourSlashInterface.Range, references: FourSlashInterface.Range[]) {
+ goTo.position(query.start);
+ for (const ref of references) {
+ verify.referencesAtPositionContains(ref);
+ }
+}
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+const [r0, r1, r2, r3, r4] = ranges;
+verifyReferences(r0, [r0, r2, r3]);
+verifyReferences(r1, [r1]);
+verifyReferences(r2, [r0, r2, r3]);
+verifyReferences(r3, [r0, r2, r3]);
+verifyReferences(r4, []);
\ No newline at end of file
diff --git a/tests/cases/fourslash/findAllRefsInheritedProperties5.ts b/tests/cases/fourslash/findAllRefsInheritedProperties5.ts
new file mode 100644
index 00000000000..d4e02a36b09
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsInheritedProperties5.ts
@@ -0,0 +1,30 @@
+///
+
+//// class C extends D {
+//// [|prop0|]: string; // r0
+//// [|prop1|]: number; // r1
+//// }
+////
+//// class D extends C {
+//// [|prop0|]: string; // r2
+//// }
+////
+//// var d: D;
+//// d.[|prop0|]; // r3
+//// d.[|prop1|]; // r4
+
+function verifyReferences(query: FourSlashInterface.Range, references: FourSlashInterface.Range[]) {
+ goTo.position(query.start);
+ for (const ref of references) {
+ verify.referencesAtPositionContains(ref);
+ }
+}
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+const [r0, r1, r2, r3, r4] = ranges;
+verifyReferences(r0, [r0]);
+verifyReferences(r1, [r1]);
+verifyReferences(r2, [r2, r3]);
+verifyReferences(r3, [r2, r3]);
+verifyReferences(r4, []);
diff --git a/tests/cases/fourslash/referencesForInheritedProperties8.ts b/tests/cases/fourslash/referencesForInheritedProperties8.ts
new file mode 100644
index 00000000000..f34b327a472
--- /dev/null
+++ b/tests/cases/fourslash/referencesForInheritedProperties8.ts
@@ -0,0 +1,27 @@
+///
+
+//// interface C extends D {
+//// /*0*/propD: number;
+//// }
+//// interface D extends C {
+//// /*1*/propD: string;
+//// /*3*/propC: number;
+//// }
+//// var d: D;
+//// d./*2*/propD;
+//// d./*4*/propC;
+
+goTo.marker("0");
+verify.referencesCountIs(3);
+
+goTo.marker("1");
+verify.referencesCountIs(3);
+
+goTo.marker("2");
+verify.referencesCountIs(3);
+
+goTo.marker("3");
+verify.referencesCountIs(2);
+
+goTo.marker("4");
+verify.referencesCountIs(2);
\ No newline at end of file
diff --git a/tests/cases/fourslash/referencesForInheritedProperties9.ts b/tests/cases/fourslash/referencesForInheritedProperties9.ts
new file mode 100644
index 00000000000..b348d6e8cf6
--- /dev/null
+++ b/tests/cases/fourslash/referencesForInheritedProperties9.ts
@@ -0,0 +1,21 @@
+///
+
+//// class D extends C {
+//// /*0*/prop1: string;
+//// }
+////
+//// class C extends D {
+//// /*1*/prop1: string;
+//// }
+////
+//// var c: C;
+//// c./*2*/prop1;
+
+goTo.marker("0");
+verify.referencesCountIs(1);
+
+goTo.marker("1");
+verify.referencesCountIs(2)
+
+goTo.marker("2");
+verify.referencesCountIs(2)
\ No newline at end of file
diff --git a/tests/cases/fourslash/renameInheritedProperties1.ts b/tests/cases/fourslash/renameInheritedProperties1.ts
index f0b2acf3b14..4698fe3d97b 100644
--- a/tests/cases/fourslash/renameInheritedProperties1.ts
+++ b/tests/cases/fourslash/renameInheritedProperties1.ts
@@ -7,9 +7,9 @@
//// var v: class1;
//// v.[|propName|];
-let ranges = test.ranges();
+const ranges = test.ranges();
verify.assertHasRanges(ranges);
-for (let range of ranges) {
+for (const range of ranges) {
goTo.position(range.start);
verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
}
\ No newline at end of file
diff --git a/tests/cases/fourslash/renameInheritedProperties5.ts b/tests/cases/fourslash/renameInheritedProperties5.ts
new file mode 100644
index 00000000000..45058827747
--- /dev/null
+++ b/tests/cases/fourslash/renameInheritedProperties5.ts
@@ -0,0 +1,17 @@
+///
+
+//// interface C extends D {
+//// propC: number;
+//// }
+//// interface D extends C {
+//// [|propD|]: string;
+//// }
+//// var d: D;
+//// d.[|propD|];
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+for (const range of ranges) {
+ goTo.position(range.start);
+ verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
+}
diff --git a/tests/cases/fourslash/renameInheritedProperties6.ts b/tests/cases/fourslash/renameInheritedProperties6.ts
new file mode 100644
index 00000000000..6bdd32ce3e0
--- /dev/null
+++ b/tests/cases/fourslash/renameInheritedProperties6.ts
@@ -0,0 +1,17 @@
+///
+
+//// interface C extends D {
+//// propD: number;
+//// }
+//// interface D extends C {
+//// [|propC|]: number;
+//// }
+//// var d: D;
+//// d.[|propC|];
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+for (const range of ranges) {
+ goTo.position(range.start);
+ verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
+}
\ No newline at end of file
diff --git a/tests/cases/fourslash/renameInheritedProperties7.ts b/tests/cases/fourslash/renameInheritedProperties7.ts
new file mode 100644
index 00000000000..a2f8c5a2b51
--- /dev/null
+++ b/tests/cases/fourslash/renameInheritedProperties7.ts
@@ -0,0 +1,19 @@
+///
+
+//// class C extends D {
+//// [|prop1|]: string;
+//// }
+////
+//// class D extends C {
+//// prop1: string;
+//// }
+////
+//// var c: C;
+//// c.[|prop1|];
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+for (const range of ranges) {
+ goTo.position(range.start);
+ verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
+}
\ No newline at end of file
diff --git a/tests/cases/fourslash/renameInheritedProperties8.ts b/tests/cases/fourslash/renameInheritedProperties8.ts
new file mode 100644
index 00000000000..119e1a477aa
--- /dev/null
+++ b/tests/cases/fourslash/renameInheritedProperties8.ts
@@ -0,0 +1,19 @@
+///
+
+//// class C implements D {
+//// [|prop1|]: string;
+//// }
+////
+//// interface D extends C {
+//// [|prop1|]: string;
+//// }
+////
+//// var c: C;
+//// c.[|prop1|];
+
+const ranges = test.ranges();
+verify.assertHasRanges(ranges);
+for (const range of ranges) {
+ goTo.position(range.start);
+ verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
+}
\ No newline at end of file