提交 d112b4b1 编写于 作者: V Victor Z 提交者: Sam Harwell

Fixed 'Qualify member access' analyzer for object initializer

上级 21127b7c
......@@ -1238,6 +1238,44 @@ public async Task QualifyPropertyAccess_InAccessorWithBodyAndExpressionBody2()
public string Foo { get; set; }
public string Bar { get { return Foo; } => this.Foo; }
}",
CodeStyleOptions.QualifyPropertyAccess);
}
[WorkItem(22776, "https://github.com/dotnet/roslyn/issues/22776")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)]
public async Task DoNotReportToQualify_InObjectInitializer1()
{
await TestMissingAsyncWithOption(
@"public class C
{
public string Foo { get; set; }
public void Bar()
{
var c = new C
{
[|Foo|] = string.Empty
};
}
}",
CodeStyleOptions.QualifyPropertyAccess);
}
[WorkItem(22776, "https://github.com/dotnet/roslyn/issues/22776")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsQualifyMemberAccess)]
public async Task DoNotReportToQualify_InObjectInitializer2()
{
await TestMissingAsyncWithOption(
@"public class C
{
public string Foo;
public void Bar()
{
var c = new C
{
[|Foo|] = string.Empty
};
}
}",
CodeStyleOptions.QualifyPropertyAccess);
}
}
......
......@@ -586,6 +586,36 @@ Class C
Private Shared Field As String = NameOf([|Value|])
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
Await TestMissingAsyncWithOption("
class C
Public Foo As Integer
Sub Bar()
Dim c = New C() With { [|.Foo = 1|] }
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_InObjectInitializer2() As Task
Await TestMissingAsyncWithOption("
class C
Public Property Foo As Integer
Sub Bar()
Dim c = New C() With { [|.Foo|] = 1 }
End Sub
End Class
",
CodeStyleOptions.QualifyFieldAccess)
End Function
End Class
......
......@@ -18,7 +18,9 @@ protected override bool IsAlreadyQualifiedMemberAccess(SyntaxNode node)
// If the member is already qualified with `base.`, it cannot be further qualified.
protected override bool CanMemberAccessBeQualified(ISymbol containingSymbol, SyntaxNode node)
=> !(node.IsKind(SyntaxKind.BaseExpression) || IsInPropertyOrFieldInitialization(containingSymbol, node));
=> !(node.IsKind(SyntaxKind.BaseExpression) ||
node.Parent.Parent.IsKind(SyntaxKind.ObjectInitializerExpression) ||
IsInPropertyOrFieldInitialization(containingSymbol, node));
private bool IsInPropertyOrFieldInitialization(ISymbol containingSymbol, SyntaxNode node)
{
......
......@@ -18,7 +18,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.QualifyMemberAccess
Protected Overrides Function CanMemberAccessBeQualified(containingSymbol As ISymbol, node As SyntaxNode) As Boolean
' If the member is already qualified with `MyBase.`, or `MyClass.`, it cannot be further qualified.
Return Not (node.IsKind(SyntaxKind.MyBaseExpression) OrElse node.IsKind(SyntaxKind.MyClassExpression))
Return Not (node.IsKind(SyntaxKind.MyBaseExpression) OrElse node.IsKind(SyntaxKind.MyClassExpression) OrElse node.IsKind(SyntaxKind.ObjectCreationExpression))
End Function
End Class
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册