public BasicBlockAnalysisData AnalyzeLocalFunctionInvocation( IMethodSymbol localFunction, CancellationToken cancellationToken ) { Debug.Assert(localFunction.IsLocalFunction()); // Use the original definition of the local function for flow analysis. localFunction = localFunction.OriginalDefinition; if (!LambdaOrLocalFunctionsBeingAnalyzed.Add(localFunction)) { ResetState(); return(CurrentBlockAnalysisData); } else { var result = AnalyzeLocalFunctionInvocationCore( localFunction, cancellationToken ); LambdaOrLocalFunctionsBeingAnalyzed.Remove(localFunction); return(result); } }
public BasicBlockAnalysisData AnalyzeLambdaInvocation(IFlowAnonymousFunctionOperation lambda, CancellationToken cancellationToken) { if (!LambdaOrLocalFunctionsBeingAnalyzed.Add(lambda.Symbol)) { ResetState(); return(CurrentBlockAnalysisData); } else { var result = AnalyzeLambdaInvocationCore(lambda, cancellationToken); LambdaOrLocalFunctionsBeingAnalyzed.Remove(lambda.Symbol); return(result); } }