public async Task <SyntaxNode> GenerateBodyForCallSiteContainerAsync(CancellationToken cancellationToken) { var container = _selectionResult.GetContainingScope(); var variableMapToRemove = CreateVariableDeclarationToRemoveMap( _analyzerResult.GetVariablesToMoveIntoMethodDefinition(cancellationToken), cancellationToken); var firstStatementToRemove = _selectionResult.FirstStatement(); var lastStatementToRemove = _selectionResult.LastStatement(); var statementsToInsert = await CreateStatementsOrInitializerToInsertAtCallSiteAsync(cancellationToken).ConfigureAwait(false); var callSiteGenerator = new CallSiteContainerRewriter( container, variableMapToRemove, firstStatementToRemove, lastStatementToRemove, statementsToInsert); return(callSiteGenerator.Generate()); }
public AnalyzerResult Analyze() { var dataFlowAnalysis = _semanticModel.AnalyzeDataFlow(_selectionResult.FirstStatement(), _selectionResult.LastStatement()); var symbolMap = GetSymbolMap(_semanticModel); GenerateVariableInfoMap(_semanticModel, dataFlowAnalysis, symbolMap, out var variableInfoMap); var isInExpressionOrHasReturnStatement = IsInExpressionOrHasReturnStatement(_semanticModel); var(parameters, returnType, variableToUseAsReturnValue) = GetSignatureInformation(dataFlowAnalysis, variableInfoMap, isInExpressionOrHasReturnStatement); var typeParametersInDeclaration = new List <ITypeParameterSymbol>(); var typeParametersInConstraintList = new List <ITypeParameterSymbol>(); var awaitTaskReturn = false; var instanceMemberIsUsed = false; var shouldBeReadOnly = false; var endOfSelectionReachable = true; return(new AnalyzerResult( _semanticDocument, typeParametersInDeclaration, typeParametersInConstraintList, parameters, variableToUseAsReturnValue, returnType, awaitTaskReturn, instanceMemberIsUsed, shouldBeReadOnly, endOfSelectionReachable)); }