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);
}
}