diff --git a/ChangeLog.md b/ChangeLog.md index 580dfdd8a4..c59f50b615 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Fix analyzer [RCS0053](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS0053) ([PR](https://github.com/dotnet/roslynator/pull/1547)) + ## [4.12.7] - 2024-10-01 ### Fixed diff --git a/src/Common/CSharp/SyntaxTriviaAnalysis.cs b/src/Common/CSharp/SyntaxTriviaAnalysis.cs index ee80bb07ed..657c588eb3 100644 --- a/src/Common/CSharp/SyntaxTriviaAnalysis.cs +++ b/src/Common/CSharp/SyntaxTriviaAnalysis.cs @@ -226,9 +226,12 @@ public static IEnumerable FindIndentations(SyntaxNode node, Tex { foreach (SyntaxTrivia trivia in node.DescendantTrivia(span)) { - if (trivia.IsKind(SyntaxKind.EndOfLineTrivia, SyntaxKind.SingleLineDocumentationCommentTrivia)) + if (trivia.IsKind(SyntaxKind.EndOfLineTrivia, SyntaxKind.SingleLineDocumentationCommentTrivia) + || SyntaxFacts.IsPreprocessorDirective(trivia.Kind())) { - int position = trivia.Span.End; + int position = (SyntaxFacts.IsPreprocessorDirective(trivia.Kind())) + ? trivia.FullSpan.End + : trivia.Span.End; if (span.Contains(position)) { diff --git a/src/Tests/Formatting.Analyzers.Tests/RCS0053FixFormattingOfListTests.cs b/src/Tests/Formatting.Analyzers.Tests/RCS0053FixFormattingOfListTests.cs index 1894c81d83..0242e92b76 100644 --- a/src/Tests/Formatting.Analyzers.Tests/RCS0053FixFormattingOfListTests.cs +++ b/src/Tests/Formatting.Analyzers.Tests/RCS0053FixFormattingOfListTests.cs @@ -1111,6 +1111,48 @@ void M() """); } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.FixFormattingOfList)] + public async Task Test_Multiline_PreprocessorDirectives() + { + await VerifyDiagnosticAndFixAsync(""" +#define FOO +using System.Collections.Generic; + +class C +{ + void M() + { + var x = new List([|new string[] + { + "", + "", +#if FOO + "", +#endif + }|]); + } +} +""", """ +#define FOO +using System.Collections.Generic; + +class C +{ + void M() + { + var x = new List(new string[] + { + "", + "", +#if FOO + "", +#endif + }); + } +} +"""); + } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.FixFormattingOfList)] public async Task TestNoDiagnostic_Singleline() {