Skip to content

Commit

Permalink
Merge pull request #51637 from CyrusNajmabadi/farDirection
Browse files Browse the repository at this point in the history
Update the Find-References feature to only find inheritance results that could lead to a specific member being used at runtime.
  • Loading branch information
msftbot[bot] authored Mar 5, 2021
2 parents ea82195 + ac03831 commit 628d74c
Show file tree
Hide file tree
Showing 28 changed files with 954 additions and 234 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public static async Task FindSymbolReferencesAsync(
await context.SetSearchTitleAsync(string.Format(EditorFeaturesResources._0_references,
FindUsagesHelpers.GetDisplayName(symbol))).ConfigureAwait(false);

var options = FindSymbols.FindReferencesSearchOptions.GetFeatureOptionsForStartingSymbol(symbol);
var options = FindReferencesSearchOptions.GetFeatureOptionsForStartingSymbol(symbol);

// Now call into the underlying FAR engine to find reference. The FAR
// engine will push results into the 'progress' instance passed into it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,57 @@ class Usages
End Function

<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCSharpAccessor_FromNameOf_Feature1(host As TestHost) As Task
Public Async Function TestCSharpAccessor_FromNameOf1_Api(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
<Document>
interface IC
{
int {|Definition:Prop|} { get; set; }
}

class C : IC
{
public virtual int {|Definition:Prop|} { get; set; }
}

class D : C
{
public override int {|Definition:Prop|} { get => base.[|Prop|]; set => base.[|Prop|] = value; }
}

class Usages
{
void M()
{
IC ic;
var n1 = nameof(ic.[|$$Prop|]);
var v1 = ic.[|Prop|];
ic.[|Prop|] = 1;
ic.[|Prop|]++;

C c;
var n2 = nameof(c.[|Prop|]);
var v2 = c.[|Prop|];
c.[|Prop|] = 1;
c.[|Prop|]++;

D d;
var n3 = nameof(d.[|Prop|]);
var v3 = d.[|Prop|];
d.[|Prop|] = 1;
d.[|Prop|]++;
}
}
</Document>
</Project>
</Workspace>
Await TestAPI(input, host)
End Function

<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCSharpAccessor_FromNameOf1_Feature(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ class C : I<int>, I<string>

<WorkItem(539883, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539883")>
<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCascadedMembersFromConstructedInterfaces5(kind As TestKind, host As TestHost) As Task
Public Async Function TestCascadedMembersFromConstructedInterfaces5_Api(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
Expand All @@ -564,12 +564,36 @@ class C : I<int>, I<string>
</Document>
</Project>
</Workspace>
Await TestAPIAndFeature(input, kind, host)
Await TestAPI(input, host)
End Function

<WorkItem(539883, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539883")>
<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCascadedMembersFromConstructedInterfaces5_FEature(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
<Document><![CDATA[
interface I<X>
{
void {|Definition:Goo|}(X x);
}

class C : I<int>, I<string>
{
public void {|Definition:$$Goo|}(int x) { }
public void Goo(string x) { }
}
]]>
</Document>
</Project>
</Workspace>
Await TestStreamingFeature(input, host)
End Function

<WorkItem(539883, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539883")>
<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCascadedMembersFromConstructedInterfaces6(kind As TestKind, host As TestHost) As Task
Public Async Function TestCascadedMembersFromConstructedInterfaces6_Api(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
Expand All @@ -588,7 +612,31 @@ class C : I<int>, I<string>
</Document>
</Project>
</Workspace>
Await TestAPIAndFeature(input, kind, host)
Await TestAPI(input, host)
End Function

<WorkItem(539883, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539883")>
<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestCascadedMembersFromConstructedInterfaces6_Feature(host As TestHost) As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
<Document><![CDATA[
interface I<X>
{
void {|Definition:Goo|}(X x);
}

class C : I<int>, I<string>
{
public void Goo(int x) { }
public void {|Definition:$$Goo|}(string x) { }
}
]]>
</Document>
</Project>
</Workspace>
Await TestStreamingFeature(input, host)
End Function

<WpfTheory, CombinatorialData, Trait(Traits.Feature, Traits.Features.FindReferences)>
Expand Down
Loading

0 comments on commit 628d74c

Please sign in to comment.