From 9a0d6640a0c783b27b08e4610fbe2667787bb22a Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Sat, 13 Nov 2021 12:08:50 +0100 Subject: [PATCH] Fix indentation analysis (fix #859) (RCS0054) --- src/CSharp/CSharp/SyntaxTriviaAnalysis.cs | 8 +++++--- .../RCS0054FixFormattingOfCallChainTests.cs | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/CSharp/CSharp/SyntaxTriviaAnalysis.cs b/src/CSharp/CSharp/SyntaxTriviaAnalysis.cs index f991f94eee..941ac97013 100644 --- a/src/CSharp/CSharp/SyntaxTriviaAnalysis.cs +++ b/src/CSharp/CSharp/SyntaxTriviaAnalysis.cs @@ -407,6 +407,10 @@ public static int DetermineIndentationSize(SyntaxNode node, CancellationToken ca if (size > 0) return size; + break; + } + case GlobalStatementSyntax: + { break; } default: @@ -431,9 +435,7 @@ public static int DetermineIndentationSize(SyntaxNode node, CancellationToken ca int DetermineIndentationSize(CompilationUnitSyntax compilationUnit) { - MemberDeclarationSyntax member = compilationUnit.Members.FirstOrDefault(); - - if (member != null) + foreach (MemberDeclarationSyntax member in compilationUnit.Members) { if (member is NamespaceDeclarationSyntax namespaceDeclaration) { diff --git a/src/Tests/Formatting.Analyzers.Tests/RCS0054FixFormattingOfCallChainTests.cs b/src/Tests/Formatting.Analyzers.Tests/RCS0054FixFormattingOfCallChainTests.cs index 80a6691d87..f5c98881ce 100644 --- a/src/Tests/Formatting.Analyzers.Tests/RCS0054FixFormattingOfCallChainTests.cs +++ b/src/Tests/Formatting.Analyzers.Tests/RCS0054FixFormattingOfCallChainTests.cs @@ -228,6 +228,24 @@ C M(string s) "); } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.FixFormattingOfCallChain)] + public async Task Test_TopLevelStatement() + { + await VerifyNoDiagnosticAsync(@" +using System; + +Console + .WriteLine(); + +class Program +{ + void Main(string[] args) + { + } +} +", options: Options.WithCompilationOptions(Options.CompilationOptions.WithOutputKind(OutputKind.ConsoleApplication))); + } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.FixFormattingOfCallChain)] public async Task TestNoDiagnostic() {