提交 5b36e90e 编写于 作者: M Manish Vasani

Fix UseExpressionBodyHelper.GetDiagnosticLocation for indexer declarations

Port existing override [UseExpressionBodyForPropertiesHelper.GetDiagnosticLocation](http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp.Features/UseExpressionBody/Helpers/UseExpressionBodyForPropertiesHelper.cs,76) to `UseExpressionBodyForIndexersHelper`

Fixes #31308
上级 f5178472
......@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.UseExpressionBody;
......@@ -298,6 +299,26 @@ int Goo
}", options: UseBlockBodyIncludingPropertiesAndIndexers);
}
[WorkItem(31308, "https://github.com/dotnet/roslyn/issues/31308")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
public async Task TestUseBlockBody5()
{
var whenOnSingleLineWithNoneEnforcement = new CodeStyleOption<ExpressionBodyPreference>(ExpressionBodyPreference.WhenOnSingleLine, NotificationOption.None);
var options = OptionsSet(
SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, whenOnSingleLineWithNoneEnforcement),
SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedProperties, whenOnSingleLineWithNoneEnforcement),
SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, whenOnSingleLineWithNoneEnforcement));
await TestMissingInRegularAndScriptAsync(
@"class C
{
C this[int index]
{
get [|=>|] default;
}
}", new TestParameters(options: options));
}
[WorkItem(20350, "https://github.com/dotnet/roslyn/issues/20350")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
public async Task TestAccessorListFormatting()
......
......@@ -71,5 +71,17 @@ protected override IndexerDeclarationSyntax WithBody(IndexerDeclarationSyntax de
declaration, options, conversionPreference,
out arrowExpression, out semicolonToken);
}
protected override Location GetDiagnosticLocation(IndexerDeclarationSyntax declaration)
{
var body = GetBody(declaration);
if (body != null)
{
return base.GetDiagnosticLocation(declaration);
}
var getAccessor = GetSingleGetAccessor(declaration.AccessorList);
return getAccessor.ExpressionBody.GetLocation();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册