From 9a3100beae8a770746fe952045510ba805d3e672 Mon Sep 17 00:00:00 2001 From: belav Date: Sun, 4 Apr 2021 10:56:22 -0500 Subject: [PATCH] closes #61 - fixes issue with trailing separators adding extra line --- .../BasicObjectCreationExpression.cst | 4 ---- .../ObjectCreationExpressions.cst | 21 +++++++++++++++++++ .../ObjectCreationWithBiggerInitializer.cst | 11 ---------- .../ObjectCreationWithInitializer.cst | 4 ---- .../_ObjectCreationExpressionTests.cs | 18 +--------------- Src/CSharpier/Printer.cs | 20 +++++++++++------- .../Printer/InitializerExpressionSyntax.cs | 12 +++++------ 7 files changed, 39 insertions(+), 51 deletions(-) delete mode 100644 Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/BasicObjectCreationExpression.cst create mode 100644 Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationExpressions.cst delete mode 100644 Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithBiggerInitializer.cst delete mode 100644 Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithInitializer.cst diff --git a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/BasicObjectCreationExpression.cst b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/BasicObjectCreationExpression.cst deleted file mode 100644 index f1a84a536..000000000 --- a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/BasicObjectCreationExpression.cst +++ /dev/null @@ -1,4 +0,0 @@ -public class ClassName -{ - public ClassName Value = new ClassName(); -} diff --git a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationExpressions.cst b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationExpressions.cst new file mode 100644 index 000000000..33e3145a1 --- /dev/null +++ b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationExpressions.cst @@ -0,0 +1,21 @@ +public class ClassName +{ + public ClassName Basic = new ClassName(); + + public ClassName WithInitializer = new ClassName { Property = true }; + + public ClassName WithBigInitializer = new ClassName + { + Property1 = true, + Property2 = false, + Property3 = false, + Property4 = false, + Property5 = false + }; + + public ClassName TrailingComma = new ClassName + { + Property1 = true, + Property2 = true, + }; +} diff --git a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithBiggerInitializer.cst b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithBiggerInitializer.cst deleted file mode 100644 index 4ef8f428f..000000000 --- a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithBiggerInitializer.cst +++ /dev/null @@ -1,11 +0,0 @@ -public class ClassName -{ - public ClassName Value = new ClassName - { - Property1 = true, - Property2 = false, - Property3 = false, - Property4 = false, - Property5 = false - }; -} diff --git a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithInitializer.cst b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithInitializer.cst deleted file mode 100644 index fe8626fe6..000000000 --- a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/ObjectCreationWithInitializer.cst +++ /dev/null @@ -1,4 +0,0 @@ -public class ClassName -{ - public ClassName Value = new ClassName { Property = true }; -} diff --git a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/_ObjectCreationExpressionTests.cs b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/_ObjectCreationExpressionTests.cs index aec5e9bd1..178dc5692 100644 --- a/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/_ObjectCreationExpressionTests.cs +++ b/Src/CSharpier.Tests/TestFiles/ObjectCreationExpression/_ObjectCreationExpressionTests.cs @@ -10,23 +10,7 @@ public void BasicObjectCreationExpression() { this.RunTest( "ObjectCreationExpression", - "BasicObjectCreationExpression" - ); - } - [Test] - public void ObjectCreationWithBiggerInitializer() - { - this.RunTest( - "ObjectCreationExpression", - "ObjectCreationWithBiggerInitializer" - ); - } - [Test] - public void ObjectCreationWithInitializer() - { - this.RunTest( - "ObjectCreationExpression", - "ObjectCreationWithInitializer" + "ObjectCreationExpressions" ); } } diff --git a/Src/CSharpier/Printer.cs b/Src/CSharpier/Printer.cs index 67842a270..a7e56a174 100644 --- a/Src/CSharpier/Printer.cs +++ b/Src/CSharpier/Printer.cs @@ -150,16 +150,20 @@ public static Doc Indent(params Doc[] contents) for (var x = 0; x < list.Count; x++) { parts.Push(printFunc(list[x])); - // TODO 1 this keeps trailing commas, that should probably be an option, for let's keep what appears to make finding "bad" code formats easier - if (x < list.SeparatorCount) + + if (x >= list.SeparatorCount) { - parts.Push( - this.PrintSyntaxToken( - list.GetSeparator(x), - afterSeparator - ) - ); + continue; } + + var isTrailingSeparator = x == list.Count - 1; + + parts.Push( + this.PrintSyntaxToken( + list.GetSeparator(x), + !isTrailingSeparator ? afterSeparator : null + ) + ); } return parts.Count == 0 ? Doc.Null : Concat(parts); diff --git a/Src/CSharpier/Printer/InitializerExpressionSyntax.cs b/Src/CSharpier/Printer/InitializerExpressionSyntax.cs index 0ed4e145e..d3ca6b8d9 100644 --- a/Src/CSharpier/Printer/InitializerExpressionSyntax.cs +++ b/Src/CSharpier/Printer/InitializerExpressionSyntax.cs @@ -17,13 +17,11 @@ public partial class Printer : Line, this.PrintSyntaxToken(node.OpenBraceToken), Indent( - Concat( - Line, - this.PrintSeparatedSyntaxList( - node.Expressions, - this.Print, - Line - ) + Line, + this.PrintSeparatedSyntaxList( + node.Expressions, + this.Print, + Line ) ), Line,