提交 61527732 编写于 作者: C CyrusNajmabadi

Make FindReferences work in auto-property intializers.

上级 0c5b6792
......@@ -2661,4 +2661,4 @@ internal bool IsTypeMissing(WellKnownType type)
internal abstract bool IsIOperationFeatureEnabled();
}
}
}
\ No newline at end of file
......@@ -24,6 +24,29 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.FindReferences
Await TestAPIAndFeature(input)
End Function
<WorkItem(10714, "https://github.com/dotnet/roslyn/issues/10714")>
<WpfFact, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestLocalInAutoPropInitializer() As Task
Dim input =
<Workspace>
<Project Language="C#" CommonReferences="true">
<Document>
using System;
class Program
{
public Action&lt;object&gt; Test { get; set; } = test =>
{
var $${|Definition:foo|} = 1;
[|foo|] = 3;
};
}
</Document>
</Project>
</Workspace>
Await TestAPIAndFeature(input)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestLocalInFieldInitializerLambda1() As Task
Dim input =
......@@ -185,8 +208,8 @@ End Module
Await TestAPIAndFeature(input)
End Function
#Region "FAR on collection initializers"
<WpfFact, Trait(Traits.Feature, Traits.Features.FindReferences)>
Public Async Function TestLocal_CSharpNamedIdentifiersUsedInNestedColInit() As Task
Dim input =
......@@ -267,5 +290,6 @@ End Module
Await TestAPIAndFeature(input)
End Function
#End Region
End Class
End Namespace
......@@ -75,13 +75,30 @@ private static ISymbol GetContainer(ISymbol symbol)
{
for (var current = symbol; current != null; current = current.ContainingSymbol)
{
if (current is IFieldSymbol || current is IPropertySymbol)
if (current is IPropertySymbol)
{
return current;
}
// If this is an initializer for a property's backing field, then we want to
// search for results within the property itself.
if (current is IFieldSymbol field)
{
if (field.IsImplicitlyDeclared &&
field.AssociatedSymbol?.Kind == SymbolKind.Property)
{
return field.AssociatedSymbol;
}
else
{
return field;
}
}
var method = current as IMethodSymbol;
if (method != null && (method.MethodKind != MethodKind.AnonymousFunction && method.MethodKind != MethodKind.LocalFunction))
if (method != null &&
method.MethodKind != MethodKind.AnonymousFunction &&
method.MethodKind != MethodKind.LocalFunction)
{
return method;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册