From 9e428fe75443bded413b9e966423ab15c716d789 Mon Sep 17 00:00:00 2001 From: Martin Strecker Date: Wed, 23 Jun 2021 19:00:27 +0100 Subject: [PATCH] Use WithTriviaFrom(currentAssignment) and add tests --- .../UseCompoundAssignmentTests.cs | 30 +++++++++++++++++++ ...actUseCompoundAssignmentCodeFixProvider.cs | 4 +-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/Analyzers/CSharp/Tests/UseCompoundAssignment/UseCompoundAssignmentTests.cs b/src/Analyzers/CSharp/Tests/UseCompoundAssignment/UseCompoundAssignmentTests.cs index a270cf16619fd..e19e878e0a740 100644 --- a/src/Analyzers/CSharp/Tests/UseCompoundAssignment/UseCompoundAssignmentTests.cs +++ b/src/Analyzers/CSharp/Tests/UseCompoundAssignment/UseCompoundAssignmentTests.cs @@ -1160,6 +1160,36 @@ int M(int i) }} }}", @$"public class C +{{ + int M(int i) + {{ + {after} + }} +}}"); + } + + [WorkItem(38054, "https://github.com/dotnet/roslyn/issues/53969")] + [Theory, Trait(Traits.Feature, Traits.Features.CodeActionsUseCompoundAssignment)] + [InlineData( + "/* Before */ i [||]= i + 1; /* After */", + "/* Before */ i++; /* After */")] + [InlineData( + "M( /* Before */ i [||]= i + 1 /* After */ );", + "M( /* Before */ ++i /* After */ );")] + [InlineData( + "M( /* Before */ i [||]= i - 1 /* After */ );", + "M( /* Before */ --i /* After */ );")] + public async Task TestTriviaPreserved(string before, string after) + { + await TestInRegularAndScript1Async( +@$"public class C +{{ + int M(int i) + {{ + {before} + }} +}}", +@$"public class C {{ int M(int i) {{ diff --git a/src/Analyzers/Core/CodeFixes/UseCompoundAssignment/AbstractUseCompoundAssignmentCodeFixProvider.cs b/src/Analyzers/Core/CodeFixes/UseCompoundAssignment/AbstractUseCompoundAssignmentCodeFixProvider.cs index 1784cf7dae4d6..3c6ec77d4ff6d 100644 --- a/src/Analyzers/Core/CodeFixes/UseCompoundAssignment/AbstractUseCompoundAssignmentCodeFixProvider.cs +++ b/src/Analyzers/Core/CodeFixes/UseCompoundAssignment/AbstractUseCompoundAssignmentCodeFixProvider.cs @@ -81,12 +81,12 @@ protected override Task FixAllAsync( if (diagnostic.Properties.ContainsKey(UseCompoundAssignmentUtilities.Increment)) { - return Increment((TExpressionSyntax)leftOfAssign.WithoutTrailingTrivia(), postfix: syntaxFacts.IsSimpleAssignmentStatement(currentAssignment.Parent)); + return Increment((TExpressionSyntax)leftOfAssign.WithTriviaFrom(currentAssignment), postfix: syntaxFacts.IsSimpleAssignmentStatement(currentAssignment.Parent)); } if (diagnostic.Properties.ContainsKey(UseCompoundAssignmentUtilities.Decrement)) { - return Decrement((TExpressionSyntax)leftOfAssign.WithoutTrailingTrivia(), postfix: syntaxFacts.IsSimpleAssignmentStatement(currentAssignment.Parent)); + return Decrement((TExpressionSyntax)leftOfAssign.WithTriviaFrom(currentAssignment), postfix: syntaxFacts.IsSimpleAssignmentStatement(currentAssignment.Parent)); } var assignmentOpKind = _binaryToAssignmentMap[syntaxKinds.Convert(rightOfAssign.RawKind)];