23 const ast_matchers::MatchFinder::MatchResult &Result) {
24 class Visitor :
public RecursiveASTVisitor<Visitor> {
29 bool VisitIfStmt(IfStmt *If) {
30 class ConditionVisitor :
public RecursiveASTVisitor<ConditionVisitor> {
38 bool TraverseLambdaExpr(LambdaExpr *, DataRecursionQueue * =
nullptr) {
43 bool TraverseRequiresExpr(RequiresExpr *,
44 DataRecursionQueue * =
nullptr) {
50 bool TraverseStmtExpr(StmtExpr *SE,
51 DataRecursionQueue *Queue =
nullptr) {
53 dyn_cast_if_present<ValueStmt>(SE->getSubStmt()->body_back()))
54 return TraverseStmt(Last->getExprStmt(), Queue);
58 bool VisitBinaryOperator(BinaryOperator *BO) {
59 if (BO->isAssignmentOp())
64 bool VisitCXXOperatorCallExpr(CXXOperatorCallExpr *OCE) {
65 if (OCE->isAssignmentOp())
71 ConditionVisitor(Check).TraverseStmt(If->getCond());
75 Visitor(*this).TraverseAST(*Result.Context);