virtual void run()

in legacy/objc/src/XPFlagRefactoring/XPFlagRefactoring.cpp [458:490]


  virtual void run(const MatchFinder::MatchResult &Result) {
    const ObjCMessageExpr *msgExpr =
        Result.Nodes.getNodeAs<ObjCMessageExpr>("theSelector");
    ASTContext *context = Result.Context;

    const Expr *conditionExpr = Result.Nodes.getNodeAs<Expr>("conditionExpr");

    Value v = IS_UNKNOWN;

    if (conditionExpr != NULL) {
      v = XPUtils::evalExpr(conditionExpr, Result, msgExpr, flagType);
    }

    if (v == IS_UNKNOWN) {
      return;
    }

    const Stmt *s = Result.Nodes.getNodeAs<ConditionalOperator>("condStmt");
    if (isa<ConditionalOperator>(s)) {
      const ConditionalOperator *co = cast<ConditionalOperator>(s);
      string replacementText = "";
      if (v == IS_TRUE) {
        replacementText =
            XPUtils::getExprSourceText(co->getTrueExpr(), context);
      } else {
        replacementText =
            XPUtils::getExprSourceText(co->getFalseExpr(), context);
      }
      llvm::errs() << "Rewriting in ConditionalOpHandler \n";
      FixItRewriterOptions::rewriteCode(context, rewriter, co->getSourceRange(),
                                        co->getBeginLoc(), replacementText);
    }
  }