summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndex.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-07-29 00:26:18 +0000
committerDouglas Gregor <dgregor@apple.com>2010-07-29 00:26:18 +0000
commitb59d21c22b7ca8d66f15e7f99f4a1aae9ebe6920 (patch)
treed0620940e3d2075f4f094b5be870bf5de0dee1f2 /clang/tools/libclang/CIndex.cpp
parent3d6ac44d96f806c2c643dd608cc7f2edcb99ebc3 (diff)
downloadbcm5719-llvm-b59d21c22b7ca8d66f15e7f99f4a1aae9ebe6920.tar.gz
bcm5719-llvm-b59d21c22b7ca8d66f15e7f99f4a1aae9ebe6920.zip
Visit the children of CXXOperatorCallExprs in source order within
libclang, so that clang_annotateTokens() doesn't get confused and miss annotations. llvm-svn: 109706
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
-rw-r--r--clang/tools/libclang/CIndex.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index c3095e7c915..19107333ee3 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -343,6 +343,7 @@ public:
// bool VisitSwitchCase(SwitchCase *S);
// Expression visitors
+ bool VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E);
bool VisitBlockExpr(BlockExpr *B);
bool VisitCompoundLiteralExpr(CompoundLiteralExpr *E);
bool VisitExplicitCastExpr(ExplicitCastExpr *E);
@@ -1055,6 +1056,20 @@ bool CursorVisitor::VisitForStmt(ForStmt *S) {
return false;
}
+bool CursorVisitor::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E) {
+ if (Visit(MakeCXCursor(E->getArg(0), StmtParent, TU)))
+ return true;
+
+ if (Visit(MakeCXCursor(E->getCallee(), StmtParent, TU)))
+ return true;
+
+ for (unsigned I = 1, N = E->getNumArgs(); I != N; ++I)
+ if (Visit(MakeCXCursor(E->getArg(I), StmtParent, TU)))
+ return true;
+
+ return false;
+}
+
bool CursorVisitor::VisitBlockExpr(BlockExpr *B) {
return Visit(B->getBlockDecl());
}
OpenPOWER on IntegriCloud