From a120c5901563a553d6bcf6fca54038c2dd52ad41 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 6 Jun 2019 11:59:18 -0700 Subject: [PATCH] Handle Lable --- src/services/findAllReferences.ts | 4 +++- tests/cases/fourslash/referencesForLabel.ts | 12 ++++++------ tests/cases/fourslash/referencesForLabel3.ts | 6 +++--- tests/cases/fourslash/referencesForLabel4.ts | 8 ++++---- tests/cases/fourslash/referencesForLabel5.ts | 16 ++++++++-------- tests/cases/fourslash/referencesForLabel6.ts | 6 +++--- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index a2eb4f3ec29..a23c5575ce7 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -55,7 +55,9 @@ namespace ts.FindAllReferences { if (isJsxOpeningElement(node.parent) || isJsxClosingElement(node.parent)) { return node.parent.parent; } - else if (isJsxSelfClosingElement(node.parent)) { + else if (isJsxSelfClosingElement(node.parent) || + isLabeledStatement(node.parent) || + isBreakOrContinueStatement(node.parent)) { return node.parent; } diff --git a/tests/cases/fourslash/referencesForLabel.ts b/tests/cases/fourslash/referencesForLabel.ts index 1abcafda0f2..bc77f5b0031 100644 --- a/tests/cases/fourslash/referencesForLabel.ts +++ b/tests/cases/fourslash/referencesForLabel.ts @@ -2,14 +2,14 @@ // Valid References for a label -////[|label|]: while (true) { -//// if (false) break [|label|]; -//// if (true) continue [|label|]; -////} +////[|[|{| "declarationRangeIndex": 0 |}label|]: while (true) { +//// if (false) [|break [|{| "declarationRangeIndex": 2 |}label|];|] +//// if (true) [|continue [|{| "declarationRangeIndex": 4 |}label|];|] +////}|] //// -////[|label|]: while (false) { } +////[|[|{| "declarationRangeIndex": 6 |}label|]: while (false) { }|] ////var label = "label"; -const [r0, r1, r2, r3] = test.ranges(); +const [r0Def, r0, r1Def, r1, r2Def, r2, r3Def, r3] = test.ranges(); verify.singleReferenceGroup("label", [r0, r1, r2]); verify.singleReferenceGroup("label", [r3]); diff --git a/tests/cases/fourslash/referencesForLabel3.ts b/tests/cases/fourslash/referencesForLabel3.ts index 13622eb90c3..be700ed6df0 100644 --- a/tests/cases/fourslash/referencesForLabel3.ts +++ b/tests/cases/fourslash/referencesForLabel3.ts @@ -2,8 +2,8 @@ // References to unused label -////[|label|]: while (true) { +////[|[|{| "declarationRangeIndex": 0 |}label|]: while (true) { //// var label = "label"; -////} +////}|] -verify.singleReferenceGroup("label"); +verify.singleReferenceGroup("label", "label"); diff --git a/tests/cases/fourslash/referencesForLabel4.ts b/tests/cases/fourslash/referencesForLabel4.ts index 2ff159bc755..353e663b0d9 100644 --- a/tests/cases/fourslash/referencesForLabel4.ts +++ b/tests/cases/fourslash/referencesForLabel4.ts @@ -2,10 +2,10 @@ // References to a label outside function bounderies -////[|label|]: function foo(label) { +////[|[|{| "declarationRangeIndex": 0 |}label|]: function foo(label) { //// while (true) { -//// break [|label|]; +//// [|break [|{| "declarationRangeIndex": 2 |}label|];|] //// } -////} +////}|] -verify.singleReferenceGroup("label"); +verify.singleReferenceGroup("label", "label"); diff --git a/tests/cases/fourslash/referencesForLabel5.ts b/tests/cases/fourslash/referencesForLabel5.ts index bc986e3350d..91223507624 100644 --- a/tests/cases/fourslash/referencesForLabel5.ts +++ b/tests/cases/fourslash/referencesForLabel5.ts @@ -2,16 +2,16 @@ // References to shadowed label -////[|label|]: while (true) { -//// if (false) break [|label|]; +////[|[|{| "declarationRangeIndex": 0 |}label|]: while (true) { +//// if (false) [|break [|{| "declarationRangeIndex": 2 |}label|];|] //// function blah() { -////[|label|]: while (true) { -//// if (false) break [|label|]; -//// } +////[|[|{| "declarationRangeIndex": 4 |}label|]: while (true) { +//// if (false) [|break [|{| "declarationRangeIndex": 6 |}label|];|] +//// }|] //// } -//// if (false) break [|label|]; -//// } +//// if (false) [|break [|{| "declarationRangeIndex": 8 |}label|];|] +//// }|] -const [outer1, outer2, inner1, inner2, outer3] = test.ranges(); +const [ourter1Def, outer1, outer2Def, outer2, inner1Def, inner1, inner2Def, inner2, outer3Def, outer3] = test.ranges(); verify.singleReferenceGroup("label", [outer1, outer2, outer3]); verify.singleReferenceGroup("label", [inner1, inner2]); diff --git a/tests/cases/fourslash/referencesForLabel6.ts b/tests/cases/fourslash/referencesForLabel6.ts index a8f71480975..2597d8a7291 100644 --- a/tests/cases/fourslash/referencesForLabel6.ts +++ b/tests/cases/fourslash/referencesForLabel6.ts @@ -2,10 +2,10 @@ // References to labels with close names -////[|labela|]: while (true) { -////[|labelb|]: while (false) { break [|labelb|]; } +////[|[|{| "declarationRangeIndex": 0 |}labela|]: while (true) { +////[|[|{| "declarationRangeIndex": 2 |}labelb|]: while (false) { [|break [|{| "declarationRangeIndex": 4 |}labelb|];|] }|] //// break labelc; -////} +////}|] verify.singleReferenceGroup("labela", "labela"); verify.singleReferenceGroup("labelb", "labelb");