summaryrefslogtreecommitdiffstats
path: root/clang/tools
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-11-12 22:24:55 +0000
committerTed Kremenek <kremenek@apple.com>2010-11-12 22:24:55 +0000
commit0d693a161ce6ed7cdabffc7620d9554454538d64 (patch)
treec3ded00891728f3d826d4a557a0c23f1adaca744 /clang/tools
parent27e50be5289ac59d0ae3b685bef43bd01ff77b7d (diff)
downloadbcm5719-llvm-0d693a161ce6ed7cdabffc7620d9554454538d64.tar.gz
bcm5719-llvm-0d693a161ce6ed7cdabffc7620d9554454538d64.zip
CursorVisitor: migrate ObjCMessageExpr over to data-recursion algorithm.
llvm-svn: 118933
Diffstat (limited to 'clang/tools')
-rw-r--r--clang/tools/libclang/CIndex.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index b6a2a51e5ca..df1937a90bf 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/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<ObjCMessageExpr>(S)->getClassReceiverTypeInfo());
+ break;
case Stmt::ParenExprClass: {
WLAddStmt(WL, C, cast<ParenExpr>(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:
OpenPOWER on IntegriCloud