public static async Task <Document> ToSingleLineAsync( Document document, InitializerExpressionSyntax initializer, CancellationToken cancellationToken = default(CancellationToken)) { InitializerExpressionSyntax newInitializer = initializer .ReplaceWhitespaceOrEndOfLineTrivia(ElasticSpace, TextSpan.FromBounds(initializer.FullSpan.Start, initializer.Span.End)) .WithFormatterAnnotation(); SyntaxNode parent = initializer.Parent; SyntaxNode newParent = parent; switch (parent.Kind()) { case SyntaxKind.ObjectCreationExpression: { var expression = (ObjectCreationExpressionSyntax)parent; expression = expression.WithInitializer(newInitializer); ArgumentListSyntax argumentList = expression.ArgumentList; if (argumentList != null) { newParent = expression.WithArgumentList(argumentList.WithoutTrailingTrivia()); } else { newParent = expression.WithType(expression.Type.WithoutTrailingTrivia()); } break; } case SyntaxKind.ArrayCreationExpression: { var expression = (ArrayCreationExpressionSyntax)parent; newParent = expression .WithInitializer(newInitializer) .WithType(expression.Type.WithoutTrailingTrivia()); break; } case SyntaxKind.ImplicitArrayCreationExpression: { var expression = (ImplicitArrayCreationExpressionSyntax)parent; newParent = expression .WithInitializer(newInitializer) .WithCloseBracketToken(expression.CloseBracketToken.WithoutTrailingTrivia()); break; } default: { Debug.Fail(parent.Kind().ToString()); return(await document.ReplaceNodeAsync(initializer, newInitializer, cancellationToken).ConfigureAwait(false)); } } return(await document.ReplaceNodeAsync(parent, newParent, cancellationToken).ConfigureAwait(false)); }