diff --git a/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs b/src/EditorFeatures/CSharpTest/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs index 939f02b33fff259eee03f2cd84b7b93b6fabecf3..267674f055164295759e5d4d2da65f36c098f68d 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 badcdcb27c85b63a966ee502b8e3cc21de6bcd29..0f3b8d3b11dcb3d15ad1ef76ef20b11325382376 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(