diff --git a/Src/CSharpier.Tests/TestFiles/ConstructorDeclaration/ConstructorDeclarations.cst b/Src/CSharpier.Tests/TestFiles/ConstructorDeclaration/ConstructorDeclarations.cst index c8c2b7757..26133443d 100644 --- a/Src/CSharpier.Tests/TestFiles/ConstructorDeclaration/ConstructorDeclarations.cst +++ b/Src/CSharpier.Tests/TestFiles/ConstructorDeclaration/ConstructorDeclarations.cst @@ -78,17 +78,29 @@ public class Initializers : BasicClass public LongMethodName___________________________________________________________() /*Comment*/: base(false) { } + + public LongInitializerBreaksAtEdgeCase() + : this(someParameter, someOtherParameter___________________________________________________) + { + WithBody(); + } } -public class Exactly80 +public class Exactly100 { - public Exactly80(int longParameter____________________________________) + public Exactly100() + : this(someParameter, someOtherParameter___________________________________________________) + { + WithBody(); + } + + public Exactly100(int longParameter____________________________________________________________) { return; } // leading comments don't affect this - public Exactly80(string longParameter_________________________________) + public Exactly100(int longParameter____________________________________________________________) { return; } diff --git a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/BaseMethodDeclaration.cs b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/BaseMethodDeclaration.cs index 86dcf51e2..1e78f326c 100644 --- a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/BaseMethodDeclaration.cs +++ b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/BaseMethodDeclaration.cs @@ -152,12 +152,15 @@ public static Doc Print(CSharpSyntaxNode node) { constructorInitializerGroupId = Guid.NewGuid().ToString(); var colonToken = Token.PrintWithSuffix(constructorInitializer.ColonToken, " "); + var argumentList = Doc.GroupWithId( + constructorInitializerGroupId, + ArgumentList.Print(constructorInitializer.ArgumentList) + ); if (parameterGroupId != null) { declarationGroup.Add( - Doc.GroupWithId( - constructorInitializerGroupId, + Doc.Group( Doc.Indent(Doc.IfBreak(" ", Doc.Line, parameterGroupId)), Doc.IfBreak( Doc.Align(2, colonToken), @@ -165,23 +168,18 @@ public static Doc Print(CSharpSyntaxNode node) parameterGroupId ), Token.Print(constructorInitializer.ThisOrBaseKeyword), - Doc.IfBreak( - ArgumentList.Print(constructorInitializer.ArgumentList), - Doc.Indent(ArgumentList.Print(constructorInitializer.ArgumentList)), - parameterGroupId - ) + Doc.IfBreak(argumentList, Doc.Indent(argumentList), parameterGroupId) ) ); } else { declarationGroup.Add( - Doc.GroupWithId( - constructorInitializerGroupId, + Doc.Group( Doc.Indent(Doc.Line), Doc.Indent(colonToken), Token.Print(constructorInitializer.ThisOrBaseKeyword), - Doc.Indent(ArgumentList.Print(constructorInitializer.ArgumentList)) + Doc.Indent(argumentList) ) ); } diff --git a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/ImplicitObjectCreationExpression.cs b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/ImplicitObjectCreationExpression.cs index 2d76d8aa1..d2206a842 100644 --- a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/ImplicitObjectCreationExpression.cs +++ b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/ImplicitObjectCreationExpression.cs @@ -10,7 +10,7 @@ public static Doc Print(ImplicitObjectCreationExpressionSyntax node) { return Doc.Group( Token.Print(node.NewKeyword), - ArgumentList.Print(node.ArgumentList), + Doc.Group(ArgumentList.Print(node.ArgumentList)), node.Initializer != null ? Doc.Concat(Doc.Line, InitializerExpression.Print(node.Initializer)) : Doc.Null diff --git a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/InvocationExpression.cs b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/InvocationExpression.cs index bd826d79b..8646b915c 100644 --- a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/InvocationExpression.cs +++ b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/InvocationExpression.cs @@ -36,7 +36,9 @@ void Traverse(ExpressionSyntax expression) printedNodes.Add( new PrintedNode( Node: invocationExpressionSyntax, - Doc: ArgumentList.Print(invocationExpressionSyntax.ArgumentList) + Doc: Doc.Group( + ArgumentList.Print(invocationExpressionSyntax.ArgumentList) + ) ) ); } diff --git a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/PrimaryConstructorBaseType.cs b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/PrimaryConstructorBaseType.cs index d8a7d02d1..930fdb550 100644 --- a/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/PrimaryConstructorBaseType.cs +++ b/Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/PrimaryConstructorBaseType.cs @@ -8,7 +8,10 @@ public static class PrimaryConstructorBaseType { public static Doc Print(PrimaryConstructorBaseTypeSyntax node) { - return Doc.Concat(Node.Print(node.Type), ArgumentList.Print(node.ArgumentList)); + return Doc.Concat( + Node.Print(node.Type), + Doc.Group(ArgumentList.Print(node.ArgumentList)) + ); } } }