From: Ted Kremenek Date: Fri, 12 Nov 2010 22:24:55 +0000 (+0000) Subject: CursorVisitor: migrate ObjCMessageExpr over to data-recursion algorithm. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c373e3c8448ddce58a9a0eff62b1b89513b1d9ee;p=clang CursorVisitor: migrate ObjCMessageExpr over to data-recursion algorithm. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118933 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index b6a2a51e5c..df1937a90b 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -360,7 +360,6 @@ public: bool VisitDeclRefExpr(DeclRefExpr *E); bool VisitBlockExpr(BlockExpr *B); bool VisitExplicitCastExpr(ExplicitCastExpr *E); - bool VisitObjCMessageExpr(ObjCMessageExpr *E); bool VisitObjCEncodeExpr(ObjCEncodeExpr *E); bool VisitOffsetOfExpr(OffsetOfExpr *E); bool VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E); @@ -391,6 +390,7 @@ bool Visit##NAME(NAME *S) { return VisitDataRecursive(S); } DATA_RECURSIVE_VISIT(InitListExpr) DATA_RECURSIVE_VISIT(ForStmt) DATA_RECURSIVE_VISIT(MemberExpr) + DATA_RECURSIVE_VISIT(ObjCMessageExpr) DATA_RECURSIVE_VISIT(OverloadExpr) DATA_RECURSIVE_VISIT(SwitchStmt) DATA_RECURSIVE_VISIT(WhileStmt) @@ -1787,14 +1787,6 @@ bool CursorVisitor::VisitCXXDependentScopeMemberExpr( return false; } -bool CursorVisitor::VisitObjCMessageExpr(ObjCMessageExpr *E) { - if (TypeSourceInfo *TSInfo = E->getClassReceiverTypeInfo()) - if (Visit(TSInfo->getTypeLoc())) - return true; - - return VisitExpr(E); -} - bool CursorVisitor::VisitObjCEncodeExpr(ObjCEncodeExpr *E) { return Visit(E->getEncodedTypeSourceInfo()->getTypeLoc()); } @@ -1892,6 +1884,10 @@ void CursorVisitor::EnqueueWorkList(VisitorWorkList &WL, Stmt *S) { WLAddStmt(WL, C, M->getBase()); break; } + case Stmt::ObjCMessageExprClass: + EnqueueChildren(WL, C, S); + WLAddTypeLoc(WL, C, cast(S)->getClassReceiverTypeInfo()); + break; case Stmt::ParenExprClass: { WLAddStmt(WL, C, cast(S)->getSubExpr()); break; @@ -1986,6 +1982,7 @@ bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) { case Stmt::IfStmtClass: case Stmt::InitListExprClass: case Stmt::MemberExprClass: + case Stmt::ObjCMessageExprClass: case Stmt::ParenExprClass: case Stmt::SwitchStmtClass: case Stmt::UnaryOperatorClass: