public static IEnumerable <StatementSyntax> ExtractRequires(IMethodSymbol method, ExtractStatements extractStatements, CancellationToken token) { var syntax = method.DeclaringSyntaxReferences; if (syntax.Length != 1) { return(Array.Empty <StatementSyntax>()); } var methodSyntax = syntax[0].GetSyntax(token) as MethodDeclarationSyntax; if (methodSyntax == null) { return(Array.Empty <StatementSyntax>()); } return(ExtractRequires(methodSyntax, extractStatements)); }
public static IEnumerable <StatementSyntax> ExtractRequires(MethodDeclarationSyntax method, ExtractStatements extractStatements) { var statementsToCheck = method.Body.Statements.TakeWhile(o => o is ExpressionStatementSyntax); switch (extractStatements) { case ExtractStatements.CustomContractRequires: return(statementsToCheck.Where(o => IsRequiresStatement(o) || IsTurboRequiresStatement(o))); case ExtractStatements.DebugAssert: return(statementsToCheck.Where(o => IsRequiresStatement(o) || IsDebugAssertStatement(o))); case ExtractStatements.All: return(statementsToCheck.Where(o => IsRequiresStatement(o) || IsDebugAssertStatement(o) || IsTurboRequiresStatement(o))); case ExtractStatements.Default: default: return(statementsToCheck.Where(o => IsRequiresStatement(o))); } }