private static void AnalyzeCatchClause(SyntaxNodeAnalysisContext context) { var catchClause = (CatchClauseSyntax)context.Node; if (catchClause.Filter != null) { return; } if (!(catchClause.Block.Statements.FirstOrDefault() is IfStatementSyntax ifStatement)) { return; } if (IsThrowStatementWithoutExpression(ifStatement.Statement.SingleNonBlockStatementOrDefault()) ^ IsThrowStatementWithoutExpression(ifStatement.Else?.Statement.SingleNonBlockStatementOrDefault())) { if (AwaitExpressionWalker.ContainsAwaitExpression(ifStatement.Condition)) { return; } if (ifStatement.ContainsUnbalancedIfElseDirectives()) { return; } DiagnosticHelpers.ReportDiagnostic(context, DiagnosticDescriptors.UseExceptionFilter, ifStatement.IfKeyword); } }
private RemoveAsyncAwaitAnalysis(AwaitExpressionWalker walker) { Walker = walker; AwaitExpression = null; }