Handle computed property names

This commit is contained in:
Sheetal Nandi 2019-06-03 14:06:30 -07:00
parent 01bbc4de2e
commit e41533acc7
3 changed files with 33 additions and 28 deletions

View file

@ -62,11 +62,16 @@ namespace ts.FindAllReferences {
node.parent.parent.left === node.parent ? node.parent.parent.left === node.parent ?
node.parent.parent : node.parent.parent :
undefined; undefined;
return binaryExpression && getAssignmentDeclarationKind(binaryExpression) !== AssignmentDeclarationKind.None ? if (binaryExpression && getAssignmentDeclarationKind(binaryExpression) !== AssignmentDeclarationKind.None) {
getDeclarationForDeclarationSpan(binaryExpression) : return getDeclarationForDeclarationSpan(binaryExpression);
undefined; }
} }
return undefined;
// Handle computed property name
const propertyName = findAncestor(node, isComputedPropertyName);
return propertyName ?
getDeclarationForDeclarationSpan(propertyName.parent) :
undefined;
} }
if (isConstructorDeclaration(node.parent) || if (isConstructorDeclaration(node.parent) ||

View file

@ -1,58 +1,58 @@
/// <reference path='fourslash.ts' /> /// <reference path='fourslash.ts' />
////interface I { ////interface I {
//// [|prop1|]: () => void; //// [|[|{| "declarationRangeIndex": 0 |}prop1|]: () => void;|]
//// prop2(): void; //// prop2(): void;
////} ////}
//// ////
////var o1: I = { ////var o1: I = {
//// [|prop1|]() { }, //// [|[|{| "declarationRangeIndex": 2 |}prop1|]() { }|],
//// prop2() { } //// prop2() { }
////}; ////};
//// ////
////var o2: I = { ////var o2: I = {
//// [|prop1|]: () => { }, //// [|[|{| "declarationRangeIndex": 4 |}prop1|]: () => { }|],
//// prop2: () => { } //// prop2: () => { }
////}; ////};
//// ////
////var o3: I = { ////var o3: I = {
//// get [|prop1|]() { return () => { }; }, //// [|get [|{| "declarationRangeIndex": 6 |}prop1|]() { return () => { }; }|],
//// get prop2() { return () => { }; } //// get prop2() { return () => { }; }
////}; ////};
//// ////
////var o4: I = { ////var o4: I = {
//// set [|prop1|](v) { }, //// [|set [|{| "declarationRangeIndex": 8 |}prop1|](v) { }|],
//// set prop2(v) { } //// set prop2(v) { }
////}; ////};
//// ////
////var o5: I = { ////var o5: I = {
//// "[|prop1|]"() { }, //// [|"[|{| "declarationRangeIndex": 10 |}prop1|]"() { }|],
//// "prop2"() { } //// "prop2"() { }
////}; ////};
//// ////
////var o6: I = { ////var o6: I = {
//// "[|prop1|]": function () { }, //// [|"[|{| "declarationRangeIndex": 12 |}prop1|]": function () { }|],
//// "prop2": function () { } //// "prop2": function () { }
////}; ////};
//// ////
////var o7: I = { ////var o7: I = {
//// ["[|prop1|]"]: function () { }, //// [|["[|{| "declarationRangeIndex": 14 |}prop1|]"]: function () { }|],
//// ["prop2"]: function () { } //// ["prop2"]: function () { }
////}; ////};
//// ////
////var o8: I = { ////var o8: I = {
//// ["[|prop1|]"]() { }, //// [|["[|{| "declarationRangeIndex": 16 |}prop1|]"]() { }|],
//// ["prop2"]() { } //// ["prop2"]() { }
////}; ////};
//// ////
////var o9: I = { ////var o9: I = {
//// get ["[|prop1|]"]() { return () => { }; }, //// [|get ["[|{| "declarationRangeIndex": 18 |}prop1|]"]() { return () => { }; }|],
//// get ["prop2"]() { return () => { }; } //// get ["prop2"]() { return () => { }; }
////}; ////};
//// ////
////var o10: I = { ////var o10: I = {
//// set ["[|prop1|]"](v) { }, //// [|set ["[|{| "declarationRangeIndex": 20 |}prop1|]"](v) { }|],
//// set ["prop2"](v) { } //// set ["prop2"](v) { }
////}; ////};
verify.rangesAreRenameLocations(); verify.rangesAreRenameLocations(test.rangesByText().get("prop1"));

View file

@ -2,57 +2,57 @@
////interface I { ////interface I {
//// prop1: () => void; //// prop1: () => void;
//// [|prop2|](): void; //// [|[|{| "declarationRangeIndex": 0 |}prop2|](): void;|]
////} ////}
//// ////
////var o1: I = { ////var o1: I = {
//// prop1() { }, //// prop1() { },
//// [|prop2|]() { } //// [|[|{| "declarationRangeIndex": 2 |}prop2|]() { }|]
////}; ////};
//// ////
////var o2: I = { ////var o2: I = {
//// prop1: () => { }, //// prop1: () => { },
//// [|prop2|]: () => { } //// [|[|{| "declarationRangeIndex": 4 |}prop2|]: () => { }|]
////}; ////};
//// ////
////var o3: I = { ////var o3: I = {
//// get prop1() { return () => { }; }, //// get prop1() { return () => { }; },
//// get [|prop2|]() { return () => { }; } //// [|get [|{| "declarationRangeIndex": 6 |}prop2|]() { return () => { }; }|]
////}; ////};
//// ////
////var o4: I = { ////var o4: I = {
//// set prop1(v) { }, //// set prop1(v) { },
//// set [|prop2|](v) { } //// [|set [|{| "declarationRangeIndex": 8 |}prop2|](v) { }|]
////}; ////};
//// ////
////var o5: I = { ////var o5: I = {
//// "prop1"() { }, //// "prop1"() { },
//// "[|prop2|]"() { } //// [|"[|{| "declarationRangeIndex": 10 |}prop2|]"() { }|]
////}; ////};
//// ////
////var o6: I = { ////var o6: I = {
//// "prop1": function () { }, //// "prop1": function () { },
//// "[|prop2|]": function () { } //// [|"[|{| "declarationRangeIndex": 12 |}prop2|]": function () { }|]
////}; ////};
//// ////
////var o7: I = { ////var o7: I = {
//// ["prop1"]: function () { }, //// ["prop1"]: function () { },
//// ["[|prop2|]"]: function () { } //// [|["[|{| "declarationRangeIndex": 14 |}prop2|]"]: function () { }|]
////}; ////};
//// ////
////var o8: I = { ////var o8: I = {
//// ["prop1"]() { }, //// ["prop1"]() { },
//// ["[|prop2|]"]() { } //// [|["[|{| "declarationRangeIndex": 16 |}prop2|]"]() { }|]
////}; ////};
//// ////
////var o9: I = { ////var o9: I = {
//// get ["prop1"]() { return () => { }; }, //// get ["prop1"]() { return () => { }; },
//// get ["[|prop2|]"]() { return () => { }; } //// [|get ["[|{| "declarationRangeIndex": 18 |}prop2|]"]() { return () => { }; }|]
////}; ////};
//// ////
////var o10: I = { ////var o10: I = {
//// set ["prop1"](v) { }, //// set ["prop1"](v) { },
//// set ["[|prop2|]"](v) { } //// [|set ["[|{| "declarationRangeIndex": 20 |}prop2|]"](v) { }|]
////}; ////};
verify.rangesAreRenameLocations(); verify.rangesAreRenameLocations(test.rangesByText().get("prop2"));