private BlockSyntax SplitOrMoveDeclarationIntoMethodDefinition(BlockSyntax body, CancellationToken cancellationToken) { var statements = body.Statements; var postProcessor = new PostProcessor(_semanticDocument.SemanticModel, _selectionResult.FirstStatement().SpanStart); var variables = _analyzerResult.GetVariablesToSplitOrMoveIntoMethodDefinition(cancellationToken); var declarationStatements = CreateDeclarationStatements(variables); declarationStatements = postProcessor.MergeDeclarationStatements(declarationStatements); return(SyntaxFactory.Block(declarationStatements.Concat(statements))); }
private BlockSyntax CleanupCode(BlockSyntax body) { var semanticModel = _semanticDocument.SemanticModel; var context = _selectionResult.GetContainingScope(); var postProcessor = new PostProcessor(semanticModel, context.SpanStart); var statements = postProcessor.RemoveRedundantBlock(body.Statements.ToList()); statements = postProcessor.RemoveDeclarationAssignmentPattern(statements); statements = postProcessor.RemoveInitializedDeclarationAndReturnPattern(statements); return(SyntaxFactory.Block(statements)); }
private async Task <IEnumerable <SyntaxNode> > CreateStatementsOrInitializerToInsertAtCallSiteAsync(CancellationToken cancellationToken) { var semanticModel = _semanticDocument.SemanticModel; var context = _selectionResult.FirstStatement(); var postProcessor = new PostProcessor(semanticModel, context.SpanStart); var statements = AddSplitOrMoveDeclarationOutStatementsToCallSite(cancellationToken); statements = postProcessor.MergeDeclarationStatements(statements); statements = AddAssignmentStatementToCallSite(statements); statements = AddInvocationAtCallSite(statements); return(statements); }