diff --git a/src/EditorFeatures/CSharpTest/RemoveUnusedMembers/RemoveUnusedMembersTests.cs b/src/EditorFeatures/CSharpTest/RemoveUnusedMembers/RemoveUnusedMembersTests.cs index 430b89ac41a3a5bb659df0826bf4939eebb96da4..6571ffc8051a04de24c73112ba97cfc3c43e22af 100644 --- a/src/EditorFeatures/CSharpTest/RemoveUnusedMembers/RemoveUnusedMembersTests.cs +++ b/src/EditorFeatures/CSharpTest/RemoveUnusedMembers/RemoveUnusedMembersTests.cs @@ -31,6 +31,37 @@ public async Task NonPrivateField(string accessibility) }}"); } + [Theory, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedMembers)] + [InlineData("public")] + [InlineData("internal")] + [InlineData("protected")] + [InlineData("protected internal")] + [InlineData("private protected")] + public async Task NonPrivateFieldWithConstantInitializer(string accessibility) + { + await TestMissingInRegularAndScriptAsync( +$@"class MyClass +{{ + {accessibility} int [|_goo|] = 0; +}}"); + } + + [Theory, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedMembers)] + [InlineData("public")] + [InlineData("internal")] + [InlineData("protected")] + [InlineData("protected internal")] + [InlineData("private protected")] + public async Task NonPrivateFieldWithNonConstantInitializer(string accessibility) + { + await TestMissingInRegularAndScriptAsync( +$@"class MyClass +{{ + {accessibility} int [|_goo|] = _goo2; + private static readonly int _goo2 = 0; +}}"); + } + [Theory, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedMembers)] [InlineData("public")] [InlineData("internal")] diff --git a/src/EditorFeatures/VisualBasicTest/RemoveUnusedMembers/RemoveUnusedMembersTests.vb b/src/EditorFeatures/VisualBasicTest/RemoveUnusedMembers/RemoveUnusedMembersTests.vb index 5328890ffec849517cf030198949c1659cfa74c9..40a1f7a7eb61007c48e0b6aec007f184a0f8364b 100644 --- a/src/EditorFeatures/VisualBasicTest/RemoveUnusedMembers/RemoveUnusedMembersTests.vb +++ b/src/EditorFeatures/VisualBasicTest/RemoveUnusedMembers/RemoveUnusedMembersTests.vb @@ -28,6 +28,31 @@ $"Class C End Class") End Function + + + + + + Public Async Function NonPrivateFieldWithConstantInitializer(accessibility As String) As Task + Await TestMissingInRegularAndScriptAsync( +$"Class C + {accessibility} [|_goo|] As Integer = 0 +End Class") + End Function + + + + + + + Public Async Function NonPrivateFieldWithNonConstantInitializer(accessibility As String) As Task + Await TestMissingInRegularAndScriptAsync( +$"Class C + {accessibility} [|_goo|] As Integer = _goo2 + Private Shared ReadOnly _goo2 As Integer = 0 +End Class") + End Function + diff --git a/src/Features/Core/Portable/RemoveUnusedMembers/AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs b/src/Features/Core/Portable/RemoveUnusedMembers/AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs index bd0cb9d1d0076e1afbf07c1b8938a96739a7b0ef..d3dd75957240f94572c127e9f6e488d73ff5800c 100644 --- a/src/Features/Core/Portable/RemoveUnusedMembers/AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs +++ b/src/Features/Core/Portable/RemoveUnusedMembers/AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs @@ -19,20 +19,41 @@ internal abstract class AbstractRemoveUnusedMembersDiagnosticAnalyzer