Skip to content

Commit 5af3966

Browse files
Copilotdavidwengier
andcommitted
Add support for IDE0040 accessibility modifier code actions
Co-authored-by: davidwengier <754264+davidwengier@users.noreply.github.com>
1 parent dccfb67 commit 5af3966

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/CSharpCodeActionProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ internal class CSharpCodeActionProvider(LanguageServerFeatureOptions languageSer
3737
RazorPredefinedCodeRefactoringProviderNames.ConvertConcatenationToInterpolatedString,
3838
RazorPredefinedCodeRefactoringProviderNames.ConvertPlaceholderToInterpolatedString,
3939
RazorPredefinedCodeRefactoringProviderNames.ConvertToInterpolatedString,
40+
"AddAccessibilityModifiers", // IDE0040: Accessibility modifiers required
4041
RazorPredefinedCodeFixProviderNames.ImplementAbstractClass,
4142
RazorPredefinedCodeFixProviderNames.ImplementInterface,
4243
RazorPredefinedCodeFixProviderNames.RemoveUnusedVariable,

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionProviderTest.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,42 @@ public async Task ProvideAsync_ImplicitExpression_ReturnsProvidedCodeAction()
298298
Assert.Equal(expectedNames, providedNames);
299299
}
300300

301+
[Fact]
302+
public async Task ProvideAsync_AddAccessibilityModifiers_ReturnsProvidedCodeAction()
303+
{
304+
// Arrange
305+
var documentPath = "c:/Test.razor";
306+
var contents = "@code { $$void Method() { } }";
307+
TestFileMarkupParser.GetPosition(contents, out contents, out var cursorPosition);
308+
309+
var request = new VSCodeActionParams()
310+
{
311+
TextDocument = new VSTextDocumentIdentifier { DocumentUri = new(new Uri(documentPath)) },
312+
Range = LspFactory.DefaultRange,
313+
Context = new VSInternalCodeActionContext()
314+
};
315+
316+
var context = CreateRazorCodeActionContext(request, cursorPosition, documentPath, contents, new SourceSpan(8, 4));
317+
318+
var provider = new CSharpCodeActionProvider(TestLanguageServerFeatureOptions.Instance);
319+
320+
ImmutableArray<RazorVSInternalCodeAction> codeActions =
321+
[
322+
new RazorVSInternalCodeAction()
323+
{
324+
Title = "Add accessibility modifiers",
325+
Name = "AddAccessibilityModifiers"
326+
}
327+
];
328+
329+
// Act
330+
var providedCodeActions = await provider.ProvideAsync(context, codeActions, DisposalToken);
331+
332+
// Assert
333+
Assert.NotEmpty(providedCodeActions);
334+
Assert.Equal("AddAccessibilityModifiers", providedCodeActions[0].Name);
335+
}
336+
301337
private static RazorCodeActionContext CreateRazorCodeActionContext(
302338
VSCodeActionParams request,
303339
int absoluteIndex,

0 commit comments

Comments
 (0)