提交 76335107 编写于 作者: M Manish Vasani

Respect code style option severity in ConvertSwitchStatementToExpressionDiagnosticAnalyzer

Fixes #36086
上级 6fea5ce2
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.ConvertSwitchStatementToExpression;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.ConvertSwitchStatementToExpression
......@@ -624,5 +629,36 @@ int M(int i)
}
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConvertSwitchStatementToExpression)]
[WorkItemAttribute(36086, "https://github.com/dotnet/roslyn/issues/36086")]
public async Task TestSeverity()
{
var source =
@"class Program
{
int M(int i)
{
[||]switch (i)
{
case 1:
return 4;
case 2:
return 5;
case 3:
return 6;
default:
return 7;
}
}
}";
var warningOption = new CodeStyleOption<bool>(true, NotificationOption.Warning);
var options = Option(CSharpCodeStyleOptions.PreferSwitchExpression, warningOption);
var testParameters = new TestParameters(options: options, parseOptions: TestOptions.Regular8);
using var workspace = CreateWorkspaceFromOptions(source, testParameters);
var diags = await GetDiagnosticsAsync(workspace, testParameters);
Assert.Single(diags);
Assert.Equal(DiagnosticSeverity.Warning, diags.First().Severity);
}
}
}
......@@ -61,9 +61,10 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
return;
}
context.ReportDiagnostic(Diagnostic.Create(Descriptor,
context.ReportDiagnostic(DiagnosticHelper.Create(Descriptor,
// Report the diagnostic on the "switch" keyword.
location: switchStatement.GetFirstToken().GetLocation(),
effectiveSeverity: styleOption.Notification.Severity,
additionalLocations: new[] { switchStatement.GetLocation() },
properties: ImmutableDictionary<string, string>.Empty
.Add(Constants.NodeToGenerateKey, ((int)nodeToGenerate).ToString(CultureInfo.InvariantCulture))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册