private static SyntaxNode GetParentNode(StatementSyntax statement) { return(statement .AncestorsAndSelf() .OfType <StatementSyntax>() .LastOrDefault()); }
public static async Task <Solution> Replace(CodeRefactoringContext context, LocalDeclarationStatementSyntax localDeclarationStatement, StatementSyntax oldStatement) { var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); var localStatementWithTrivia = localDeclarationStatement .WithLeadingTrivia(oldStatement.GetLeadingTrivia()) .WithTrailingTrivia(oldStatement.GetTrailingTrivia()); var block = oldStatement.AncestorsAndSelf().OfType <BlockSyntax>().First(); var newRoot = root.ReplaceNode(block, block.ReplaceNode(oldStatement, localStatementWithTrivia)); var newDocument = context.Document.WithSyntaxRoot(newRoot); return(await LocalVariableRenamer.RenameVariable(newDocument, context)); }