private ObjectCreationExpressionSyntax GetNewObjectCreation( ObjectCreationExpressionSyntax objectCreation, ImmutableArray <Match <ExpressionSyntax, StatementSyntax, MemberAccessExpressionSyntax, ExpressionStatementSyntax> > matches) { return(UseInitializerHelpers.GetNewObjectCreation( objectCreation, CreateExpressions(matches))); }
private static SeparatedSyntaxList <ExpressionSyntax> CreateExpressions( BaseObjectCreationExpressionSyntax objectCreation, ImmutableArray <Match <ExpressionSyntax, StatementSyntax, MemberAccessExpressionSyntax, ExpressionStatementSyntax> > matches) { using var _ = ArrayBuilder <SyntaxNodeOrToken> .GetInstance(out var nodesAndTokens); UseInitializerHelpers.AddExistingItems(objectCreation, nodesAndTokens); for (var i = 0; i < matches.Length; i++) { var match = matches[i]; var expressionStatement = match.Statement; var assignment = (AssignmentExpressionSyntax)expressionStatement.Expression; var newAssignment = assignment.WithLeft( match.MemberAccessExpression.Name.WithLeadingTrivia(match.MemberAccessExpression.GetLeadingTrivia())); if (i < matches.Length - 1) { nodesAndTokens.Add(newAssignment); var commaToken = SyntaxFactory.Token(SyntaxKind.CommaToken) .WithTriviaFrom(expressionStatement.SemicolonToken); nodesAndTokens.Add(commaToken); } else { newAssignment = newAssignment.WithTrailingTrivia( expressionStatement.GetTrailingTrivia()); nodesAndTokens.Add(newAssignment); } } return(SyntaxFactory.SeparatedList <ExpressionSyntax>(nodesAndTokens)); }