diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts
new file mode 100644
index 00000000000..ad72bd99bb8
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts
@@ -0,0 +1,21 @@
+///
+
+////interface I {
+//// [|property1|]: number;
+//// property2: string;
+////}
+////
+////function f({ [|property1|]: p1 }: I,
+//// { [|property1|] }: I,
+//// { property1: p2 }) {
+////}
+
+let ranges = test.ranges();
+for (let range of ranges) {
+ goTo.position(range.start);
+
+ verify.referencesCountIs(ranges.length);
+ for (let expectedRange of ranges) {
+ verify.referencesAtPositionContains(expectedRange);
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts
new file mode 100644
index 00000000000..aa6432fa62e
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts
@@ -0,0 +1,21 @@
+///
+
+////interface I {
+//// property1: number;
+//// property2: string;
+////}
+////
+////function f({ [|property1|]: p }, { property1 }) {
+//// let x = property1;
+////}
+
+// Notice only one range.
+let ranges = test.ranges();
+for (let range of ranges) {
+ goTo.position(range.start);
+
+ verify.referencesCountIs(ranges.length);
+ for (let expectedRange of ranges) {
+ verify.referencesAtPositionContains(expectedRange);
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts
new file mode 100644
index 00000000000..4ce33f2b6ad
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts
@@ -0,0 +1,23 @@
+///
+
+////interface I {
+//// [|property1|]: number;
+//// property2: string;
+////}
+////
+////for (let { [|property1|]: p } of []) {
+////}
+////for (let { [|property1|] } of []) {
+////}
+////for (var { [|property1|]: p } of []) {
+////}
+
+let ranges = test.ranges();
+for (let range of ranges) {
+ goTo.position(range.start);
+
+ verify.referencesCountIs(ranges.length);
+ for (let expectedRange of ranges) {
+ verify.referencesAtPositionContains(expectedRange);
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName07.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName07.ts
new file mode 100644
index 00000000000..6448d2396b3
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName07.ts
@@ -0,0 +1,15 @@
+///
+
+////let p, b;
+////
+////p, [{ [|a|]: p, b }] = [{ [|a|]: 10, b: true }];
+
+let ranges = test.ranges();
+for (let range of ranges) {
+ goTo.position(range.start);
+
+ verify.referencesCountIs(ranges.length);
+ for (let expectedRange of ranges) {
+ verify.referencesAtPositionContains(expectedRange);
+ }
+}
\ No newline at end of file