未验证 提交 34efe31e 编写于 作者: S Sam Harwell 提交者: GitHub

Merge pull request #34402 from KGRWhite/32093fix

Do not qualify instance member access within a constructor initializer
......@@ -1374,6 +1374,26 @@ public async Task DoNotReportToQualify_IfInStaticContext6()
CodeStyleOptions.QualifyEventAccess);
}
[WorkItem(32093, "https://github.com/dotnet/roslyn/issues/32093")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)]
public async Task DoNotReportToQualify_IfInBaseConstructor()
{
await TestMissingAsyncWithOption(
@"public class Base
{
public string Foo { get; }
public Base(string foo){}
}
public class Derived : Base
{
public Derived()
: base(nameof([|Foo|]))
{}
}
",
CodeStyleOptions.QualifyFieldAccess);
}
[WorkItem(21519, "https://github.com/dotnet/roslyn/issues/21519")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)]
public async Task QualifyPropertyAccess_InAccessorExpressionBody()
......
......@@ -730,6 +730,25 @@ End Class
CodeStyleOptions.QualifyFieldAccess)
End Function
<WorkItem(32093, "https://github.com/dotnet/roslyn/issues/32093")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)>
Public Async Function DoNotReportToQualify_IfInBaseConstructor() As Task
Await TestMissingAsyncWithOption("
Public Class Base
Public ReadOnly Property Foo As String
Public Sub New(ByVal foo As String)
End Sub
End Class
Public Class Derived
Inherits Base
Public Sub New()
MyBase.New(NameOf([|Foo|]))
End Sub
End Class",
CodeStyleOptions.QualifyFieldAccess)
End Function
<WorkItem(22776, "https://github.com/dotnet/roslyn/issues/22776")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)>
Public Async Function DoNotReportToQualify_InObjectInitializer1() As Task
......
......@@ -21,7 +21,8 @@ protected override bool IsAlreadyQualifiedMemberAccess(ExpressionSyntax node)
// If the member is already qualified with `base.`,
// or member is in object initialization context,
// or member in property or field initialization, it cannot be qualified.
// or member in property or field initialization,
// or member in constructor initializer, it cannot be qualified.
protected override bool CanMemberAccessBeQualified(ISymbol containingSymbol, SyntaxNode node)
{
if (node.GetAncestorOrThis<AttributeSyntax>() != null)
......@@ -29,6 +30,11 @@ protected override bool CanMemberAccessBeQualified(ISymbol containingSymbol, Syn
return false;
}
if (node.GetAncestorOrThis<ConstructorInitializerSyntax>() != null)
{
return false;
}
return !(node.IsKind(SyntaxKind.BaseExpression) ||
node.Parent.Parent.IsKind(SyntaxKind.ObjectInitializerExpression) ||
IsInPropertyOrFieldInitialization(containingSymbol, node));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册