Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the Find-References feature to only find inheritance results that could lead to a specific member being used at runtime. #51637

Merged
13 commits merged into from
Mar 5, 2021
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