private static Task <Document> RefactorAsync( Document document, StatementsInfo statementsInfo, LocalDeclarationStatementSyntax[] localDeclarations, CancellationToken cancellationToken = default(CancellationToken)) { LocalDeclarationStatementSyntax localDeclaration = localDeclarations[0]; SyntaxList <StatementSyntax> statements = statementsInfo.Statements; int index = statements.IndexOf(localDeclaration); VariableDeclaratorSyntax[] variables = localDeclarations .Skip(1) .Select(f => f.Declaration) .SelectMany(f => f.Variables) .ToArray(); LocalDeclarationStatementSyntax newLocalDeclaration = localDeclaration .AddDeclarationVariables(variables) .WithTrailingTrivia(localDeclarations[localDeclarations.Length - 1].GetTrailingTrivia()) .WithFormatterAnnotation(); SyntaxList <StatementSyntax> newStatements = statements.Replace( localDeclaration, newLocalDeclaration); for (int i = 1; i < localDeclarations.Length; i++) { newStatements = newStatements.RemoveAt(index + 1); } return(document.ReplaceStatementsAsync(statementsInfo, newStatements, cancellationToken)); }
private static async Task <Document> RefactorAsync( Document document, StatementContainer container, LocalDeclarationStatementSyntax[] localDeclarations, CancellationToken cancellationToken = default(CancellationToken)) { SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); LocalDeclarationStatementSyntax localDeclaration = localDeclarations[0]; SyntaxList <StatementSyntax> statements = container.Statements; int index = statements.IndexOf(localDeclaration); VariableDeclaratorSyntax[] variables = localDeclarations .Skip(1) .Select(f => f.Declaration) .SelectMany(f => f.Variables) .ToArray(); LocalDeclarationStatementSyntax newLocalDeclaration = localDeclaration .AddDeclarationVariables(variables) .WithTrailingTrivia(localDeclarations[localDeclarations.Length - 1].GetTrailingTrivia()) .WithFormatterAnnotation(); SyntaxList <StatementSyntax> newStatements = statements.Replace( localDeclaration, newLocalDeclaration); for (int i = 1; i < localDeclarations.Length; i++) { newStatements = newStatements.RemoveAt(index + 1); } SyntaxNode newRoot = root.ReplaceNode(container.Node, container.NodeWithStatements(newStatements)); return(document.WithSyntaxRoot(newRoot)); }