From 438791ed8372bd2244b85c93ee6e9ca34b68a806 Mon Sep 17 00:00:00 2001 From: David Wengier Date: Fri, 14 May 2021 14:14:46 +1000 Subject: [PATCH] Preserve trailing trivia on open brace --- ...entToExpressionCodeFixProvider.Rewriter.cs | 2 +- ...ConvertSwitchStatementToExpressionTests.cs | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/Analyzers/CSharp/CodeFixes/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs b/src/Analyzers/CSharp/CodeFixes/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs index e101d73fcbdcd..d66e35ee7b572 100644 --- a/src/Analyzers/CSharp/CodeFixes/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs +++ b/src/Analyzers/CSharp/CodeFixes/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs @@ -216,7 +216,7 @@ private ExpressionSyntax RewriteSwitchStatement(SwitchStatementSyntax node, Sema return SwitchExpression( switchStatement.Expression.Parenthesize(), Token(leading: default, SyntaxKind.SwitchKeyword, node.CloseParenToken.TrailingTrivia), - Token(SyntaxKind.OpenBraceToken), + Token(leading: default, SyntaxKind.OpenBraceToken, node.OpenBraceToken.TrailingTrivia), SeparatedList( switchArms.Select(t => t.armExpression.WithLeadingTrivia(t.tokensForLeadingTrivia.GetTrivia().FilterComments(addElasticMarker: false))), switchArms.Select(t => Token(SyntaxKind.CommaToken).WithTrailingTrivia(t.tokensForTrailingTrivia.GetTrivia().FilterComments(addElasticMarker: true)))), diff --git a/src/Analyzers/CSharp/Tests/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs b/src/Analyzers/CSharp/Tests/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs index 1b204c7250b39..d60e131fb31e3 100644 --- a/src/Analyzers/CSharp/Tests/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs +++ b/src/Analyzers/CSharp/Tests/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionTests.cs @@ -759,6 +759,37 @@ static int GetValue(int input) }"); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConvertSwitchStatementToExpression)] + [WorkItem(52258, "https://github.com/dotnet/roslyn/issues/52258")] + public async Task TestTrivia_03() + { + await VerifyCS.VerifyCodeFixAsync( +@"class Program +{ + int M(int i) + { + [|switch|] (i) + { // Tip-toe through the trailing trivia + case 0: return 123; + case 1: return 234; + default: throw null; + } + } +}", +@"class Program +{ + int M(int i) + { + return i switch + { // Tip-toe through the trailing trivia + 0 => 123, + 1 => 234, + _ => throw null, + }; + } +}"); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConvertSwitchStatementToExpression)] [WorkItem(36086, "https://github.com/dotnet/roslyn/issues/36086")] public async Task TestSeverity()