From da90f99c004e9db1863cb43c831de1524dd9aa71 Mon Sep 17 00:00:00 2001 From: belav Date: Mon, 19 Jul 2021 10:45:30 -0500 Subject: [PATCH 1/2] Make sure empty block doesn't break on method declaration closes #133 --- .../MethodDeclaration/MethodDeclarations.cst | 9 ++++++++- .../SyntaxPrinter/SyntaxNodePrinters/Block.cs | 13 +++++++++++++ Src/CSharpier/SyntaxPrinter/Token.cs | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Src/CSharpier.Tests/TestFiles/MethodDeclaration/MethodDeclarations.cst b/Src/CSharpier.Tests/TestFiles/MethodDeclaration/MethodDeclarations.cst index c88da3028..d20c5fd83 100644 --- a/Src/CSharpier.Tests/TestFiles/MethodDeclaration/MethodDeclarations.cst +++ b/Src/CSharpier.Tests/TestFiles/MethodDeclaration/MethodDeclarations.cst @@ -1,6 +1,13 @@ public class ClassName { - public void DoStuff() { } + public void MethodName() { } + + public void LongMethodNameKeepsEmptyBraces__________________________________________________________() { } + + public void LongMethodNameKeepsEmptyBraces__________________________________________________________() + { + // comment + } public void LongMethodNameForceLineBreak( string oneoneoneoneoneoneoneoneone, diff --git a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/Block.cs b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/Block.cs index d93d206ff..48563e321 100644 --- a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/Block.cs +++ b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/Block.cs @@ -21,6 +21,19 @@ public static Doc PrintWithConditionalSpace(BlockSyntax node, string groupId) private static Doc Print(BlockSyntax node, string? groupId) { + if ( + node.Statements.Count == 0 + && node.Parent is MethodDeclarationSyntax + && !Token.HasComments(node.CloseBraceToken) + ) { + return Doc.Concat( + " ", + Token.Print(node.OpenBraceToken), + " ", + Token.Print(node.CloseBraceToken) + ); + } + Doc statementSeparator = node.Parent is AccessorDeclarationSyntax && node.Statements.Count <= 1 ? Doc.Line : Doc.HardLine; diff --git a/Src/CSharpier/SyntaxPrinter/Token.cs b/Src/CSharpier/SyntaxPrinter/Token.cs index e2f531fdc..fecb6cbdb 100644 --- a/Src/CSharpier/SyntaxPrinter/Token.cs +++ b/Src/CSharpier/SyntaxPrinter/Token.cs @@ -239,5 +239,19 @@ private static Doc PrintTrailingTrivia(SyntaxTriviaList trailingTrivia) return docs.Count > 0 ? Doc.Concat(docs) : Doc.Null; } + + public static bool HasComments(SyntaxToken syntaxToken) + { + return syntaxToken.LeadingTrivia.Any( + o => + o.Kind() != SyntaxKind.WhitespaceTrivia + && o.Kind() != SyntaxKind.EndOfLineTrivia + ) + || syntaxToken.TrailingTrivia.Any( + o => + o.Kind() != SyntaxKind.WhitespaceTrivia + && o.Kind() != SyntaxKind.EndOfLineTrivia + ); + } } } From dd68ec03be291fb69e20e71debc3115f09ba6502 Mon Sep 17 00:00:00 2001 From: belav Date: Thu, 22 Jul 2021 20:07:15 -0500 Subject: [PATCH 2/2] drinking the kool-aid --- Src/CSharpier/SyntaxPrinter/Token.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Src/CSharpier/SyntaxPrinter/Token.cs b/Src/CSharpier/SyntaxPrinter/Token.cs index fecb6cbdb..e03ec0dcc 100644 --- a/Src/CSharpier/SyntaxPrinter/Token.cs +++ b/Src/CSharpier/SyntaxPrinter/Token.cs @@ -243,14 +243,10 @@ private static Doc PrintTrailingTrivia(SyntaxTriviaList trailingTrivia) public static bool HasComments(SyntaxToken syntaxToken) { return syntaxToken.LeadingTrivia.Any( - o => - o.Kind() != SyntaxKind.WhitespaceTrivia - && o.Kind() != SyntaxKind.EndOfLineTrivia + o => o.Kind() is not (SyntaxKind.WhitespaceTrivia or SyntaxKind.EndOfLineTrivia) ) || syntaxToken.TrailingTrivia.Any( - o => - o.Kind() != SyntaxKind.WhitespaceTrivia - && o.Kind() != SyntaxKind.EndOfLineTrivia + o => o.Kind() is not (SyntaxKind.WhitespaceTrivia or SyntaxKind.EndOfLineTrivia) ); } }