private async Task <Document> ExtractVariableDeclarationAsync(Document document, VariableDeclarationSyntax declaration, CancellationToken cancellationToken) { var oldClassNode = declaration.Ancestors(false).OfType <ClassDeclarationSyntax>().Single(); _currentClassNode = oldClassNode; var semanticModel = await document.GetSemanticModelAsync(cancellationToken); _methodGenerator = new GenerateMethodFromStatementSyntaxWalker(semanticModel); _methodGenerator.VisitVariableDeclaration(declaration); RemoveVariableDeclarations(); InsertExtractedMethods(); ReplaceVariableCallsWithMethodCalls(); var rootWithNewClass = document.GetSyntaxTreeAsync(cancellationToken).Result.GetRoot().ReplaceNode(oldClassNode, _currentClassNode); return(document.WithSyntaxRoot(rootWithNewClass)); }
public ExtractDeclarationSyntaxRewriter(SemanticModel semanticModel) { _semanticModel = semanticModel; _methodGenerator = new GenerateMethodFromStatementSyntaxWalker(_semanticModel); }