diff --git a/src/services/services.ts b/src/services/services.ts
index 4f5bdbdc469..3cf6b432c5d 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -6741,7 +6741,7 @@ namespace ts {
fileName: node.getSourceFile().fileName,
textSpan: createTextSpanFromBounds(start, end),
isWriteAccess: isWriteAccess(node),
- isDefinition: isDeclarationName(node)
+ isDefinition: isDeclarationName(node) || node.parent.kind === SyntaxKind.ComputedPropertyName
};
}
diff --git a/tests/cases/fourslash/getOccurrencesIsDefinitionOfBindingPattern.ts b/tests/cases/fourslash/getOccurrencesIsDefinitionOfBindingPattern.ts
new file mode 100644
index 00000000000..9a30687c59e
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesIsDefinitionOfBindingPattern.ts
@@ -0,0 +1,8 @@
+///
+////const { [|{| "isDefinition": true |}x|], y } = { x: 1, y: 2 };
+////const z = [|{| "isDefinition": false |}x|];
+var firstRange = test.ranges()[0];
+goTo.position(firstRange.start, firstRange.fileName);
+test.ranges().forEach(range => {
+ verify.referencesAtPositionContains(range, undefined, range.marker.data.isDefinition);
+});
diff --git a/tests/cases/fourslash/getOccurrencesIsDefinitionOfComputedProperty.ts b/tests/cases/fourslash/getOccurrencesIsDefinitionOfComputedProperty.ts
new file mode 100644
index 00000000000..8896694db50
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesIsDefinitionOfComputedProperty.ts
@@ -0,0 +1,9 @@
+///
+////let o = { ["[|{| "isDefinition": true |}foo|]"]: 12 };
+////let y = o.[|{| "isDefinition": false |}foo|];
+////let z = o['[|{| "isDefinition": false |}foo|]'];
+var firstRange = test.ranges()[0];
+goTo.position(firstRange.start, firstRange.fileName);
+test.ranges().forEach(range => {
+ verify.referencesAtPositionContains(range, undefined, range.marker.data.isDefinition);
+});
diff --git a/tests/cases/fourslash/getOccurrencesIsDefinitionOfExport.ts b/tests/cases/fourslash/getOccurrencesIsDefinitionOfExport.ts
new file mode 100644
index 00000000000..f863af9184f
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesIsDefinitionOfExport.ts
@@ -0,0 +1,11 @@
+///
+// @Filename: m.ts
+////export var [|{| "isDefinition": true |}x|] = 12;
+// @Filename: main.ts
+////import { [|{| "isDefinition": true |}x|] } from "./m";
+////const y = [|{| "isDefinition": false |}x|];
+var firstRange = test.ranges()[0];
+goTo.position(firstRange.start, firstRange.fileName);
+test.ranges().forEach(range => {
+ verify.referencesAtPositionContains(range, undefined, range.marker.data.isDefinition);
+});
diff --git a/tests/cases/fourslash/getOccurrencesIsDefinitionOfNumberNamedProperty.ts b/tests/cases/fourslash/getOccurrencesIsDefinitionOfNumberNamedProperty.ts
new file mode 100644
index 00000000000..7e3e084948f
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesIsDefinitionOfNumberNamedProperty.ts
@@ -0,0 +1,8 @@
+///
+////let o = { [|{| "isDefinition": true |}1|]: 12 };
+////let y = o[[|{| "isDefinition": false |}1|]];
+var firstRange = test.ranges()[0];
+goTo.position(firstRange.start, firstRange.fileName);
+test.ranges().forEach(range => {
+ verify.referencesAtPositionContains(range, undefined, range.marker.data.isDefinition);
+});
diff --git a/tests/cases/fourslash/getOccurrencesIsDefinitionOfStringNamedProperty.ts b/tests/cases/fourslash/getOccurrencesIsDefinitionOfStringNamedProperty.ts
new file mode 100644
index 00000000000..291aec90dda
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesIsDefinitionOfStringNamedProperty.ts
@@ -0,0 +1,8 @@
+///
+////let o = { "[|{| "isDefinition": true |}x|]": 12 };
+////let y = o.[|{| "isDefinition": false |}x|];
+var firstRange = test.ranges()[0];
+goTo.position(firstRange.start, firstRange.fileName);
+test.ranges().forEach(range => {
+ verify.referencesAtPositionContains(range, undefined, range.marker.data.isDefinition);
+});