diff --git a/Src/CSharpier.Core/CSharp/SyntaxPrinter/RightHandSide.cs b/Src/CSharpier.Core/CSharp/SyntaxPrinter/RightHandSide.cs index 272082060..71773bfde 100644 --- a/Src/CSharpier.Core/CSharp/SyntaxPrinter/RightHandSide.cs +++ b/Src/CSharpier.Core/CSharp/SyntaxPrinter/RightHandSide.cs @@ -126,7 +126,7 @@ or ConditionalExpressionSyntax or InterpolatedStringExpressionSyntax or IsPatternExpressionSyntax or LiteralExpressionSyntax - or StackAllocArrayCreationExpressionSyntax + or StackAllocArrayCreationExpressionSyntax { Initializer: null } or QueryExpressionSyntax => Layout.BreakAfterOperator, _ => Layout.Fluid, }; diff --git a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/ArrayCreationExpression.cs b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/ArrayCreationExpression.cs index 780574eb7..9feaf0131 100644 --- a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/ArrayCreationExpression.cs +++ b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/ArrayCreationExpression.cs @@ -11,7 +11,7 @@ public static Doc Print(ArrayCreationExpressionSyntax node, PrintingContext cont Token.PrintWithSuffix(node.NewKeyword, " ", context), Node.Print(node.Type, context), node.Initializer != null - ? Doc.Concat(Doc.Line, Node.Print(node.Initializer, context)) + ? Doc.Concat(Doc.Line, InitializerExpression.Print(node.Initializer, context)) : Doc.Null ); } diff --git a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/InitializerExpression.cs b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/InitializerExpression.cs index 26ee3ba70..500a84817 100644 --- a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/InitializerExpression.cs +++ b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/InitializerExpression.cs @@ -58,6 +58,7 @@ is not SyntaxKind.ComplexElementInitializerExpression is not ( ObjectCreationExpressionSyntax or ArrayCreationExpressionSyntax + or StackAllocArrayCreationExpressionSyntax or ImplicitArrayCreationExpressionSyntax or ImplicitObjectCreationExpressionSyntax ) diff --git a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/StackAllocArrayCreationExpression.cs b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/StackAllocArrayCreationExpression.cs index 737600913..776a69f83 100644 --- a/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/StackAllocArrayCreationExpression.cs +++ b/Src/CSharpier.Core/CSharp/SyntaxPrinter/SyntaxNodePrinters/StackAllocArrayCreationExpression.cs @@ -7,12 +7,12 @@ internal static class StackAllocArrayCreationExpression { public static Doc Print(StackAllocArrayCreationExpressionSyntax node, PrintingContext context) { - return Doc.Concat( + return Doc.Group( Token.PrintWithSuffix(node.StackAllocKeyword, " ", context), Node.Print(node.Type, context), node.Initializer != null - ? Doc.Concat(" ", InitializerExpression.Print(node.Initializer, context)) - : string.Empty + ? Doc.Concat(Doc.Line, InitializerExpression.Print(node.Initializer, context)) + : Doc.Null ); } } diff --git a/Src/CSharpier.Tests/FormattingTests/TestFiles/cs/StackAllocArrayCreationExpressions.test b/Src/CSharpier.Tests/FormattingTests/TestFiles/cs/StackAllocArrayCreationExpressions.test index a0bcba979..55081736f 100644 --- a/Src/CSharpier.Tests/FormattingTests/TestFiles/cs/StackAllocArrayCreationExpressions.test +++ b/Src/CSharpier.Tests/FormattingTests/TestFiles/cs/StackAllocArrayCreationExpressions.test @@ -1,10 +1,14 @@ -class ClassName +Span a = stackalloc int[3]; +Span a = stackalloc int[3] { 1, 2, 3 }; +Span a = stackalloc int[] { 1, 2, 3 }; +Span a = stackalloc[] { 1, 2, 3 }; + +Span someLongName_________________________ = + stackalloc byte[JsonConstants.MaximumEscapedDateTimeOffsetParseLength]; + +Span metatable = stackalloc int[] { - void MethodName() - { - Span a = stackalloc int[3]; - Span a = stackalloc int[3] { 1, 2, 3 }; - Span a = stackalloc int[] { 1, 2, 3 }; - Span a = stackalloc[] { 1, 2, 3 }; - } -} + 00000000000000000000000001, + 00000000000000000000000002, + 00000000000000000000000003, +};