public static IEnumerable <Impurity> GetImpurities( SyntaxNode methodDeclaration, SemanticModel semanticModel, KnownSymbols knownSymbols, RecursiveState recursiveState, PurityType purityType = PurityType.Pure, Maybe <PureLambdaConfig> pureLambdaConfig = default) { var impuritiesFinder = new ImpuritiesFinder(semanticModel, purityType, knownSymbols); return(impuritiesFinder.GetImpurities(methodDeclaration, recursiveState, pureLambdaConfig)); }
ChangeAcceptedPurityTypeBasedOnWhetherExpressionRepresentsANewObjectOrParameterBasedExpression( PurityType currentAcceptedPurityType, ExpressionSyntax node, KnownSymbols knownSymbols, SemanticModel semanticModel, RecursiveState recursiveState) { if (Utils.IsNewlyCreatedObject(semanticModel, node, knownSymbols, RecursiveIsNewlyCreatedObjectState.Empty(), recursiveState)) { return(PurityType.PureExceptLocally); } else if (ImpuritiesFinder.IsParameter(semanticModel, node)) { return(PurityType.PureExceptReadLocally); } return(currentAcceptedPurityType); }