From 09fa9eafe905203cfc6a6ff9f0bcb935a4b7f481 Mon Sep 17 00:00:00 2001 From: meziantou Date: Fri, 5 Jul 2019 16:50:28 -0400 Subject: [PATCH] IDE0066 code fix adds parentheses when needed --- ...ConvertSwitchStatementToExpressionTests.cs | 37 +++++++++++++++++++ ...entToExpressionCodeFixProvider.Rewriter.cs | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs b/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs index 939f02b33ff..267674f0551 100644 --- a/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs +++ b/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs @@ -661,5 +661,42 @@ int M(int i) Assert.Equal(DiagnosticSeverity.Warning, diag.Severity); Assert.Equal(IDEDiagnosticIds.ConvertSwitchStatementToExpressionDiagnosticId, diag.Id); } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConvertSwitchStatementToExpression)] + [WorkItem(36995, "https://github.com/dotnet/roslyn/issues/36995")] + public async Task TestAddParenthesesAroundBinaryExpression() + { + await TestInCSharp8( +@"class Program +{ + void M(int i) + { + int j = 123; + [||]switch (i % 10) + { + case 1: + j = 4; + break; + case 2: + j = 5; + break; + } + throw null; + } +}", +@"class Program +{ + void M(int i) + { + int j = 123; + j = (i % 10) switch + { + 1 => 4, + 2 => 5, + _ => throw null, + }; + } +}"); + } } } diff --git a/src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs b/src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs index badcdcb27c8..0f3b8d3b11d 100644 --- a/src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs +++ b/src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs @@ -245,7 +245,7 @@ private ExpressionSyntax RewriteSwitchStatement(SwitchStatementSyntax node, bool } return SwitchExpression( - node.Expression, + node.Expression.Parenthesize(), Token(leading: default, SyntaxKind.SwitchKeyword, node.CloseParenToken.TrailingTrivia), Token(SyntaxKind.OpenBraceToken), SeparatedList( -- GitLab