summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-05-06 19:08:57 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-05-06 19:08:57 +0000
commitfe6a01253e96c04e3d45c0dc41e5ca711039d81a (patch)
tree1c049e9c495dd0b4307444523894cf691005b9cb /clang
parent14b74fd1534ad271bb72276beb781bef195f9efe (diff)
downloadbcm5719-llvm-fe6a01253e96c04e3d45c0dc41e5ca711039d81a.tar.gz
bcm5719-llvm-fe6a01253e96c04e3d45c0dc41e5ca711039d81a.zip
Have the RecursiveASTVisitor traverse the type source info of an objc class message.
llvm-svn: 181237
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/RecursiveASTVisitor.h5
-rw-r--r--clang/test/Index/index-refs.m9
-rw-r--r--clang/tools/libclang/IndexBody.cpp3
-rw-r--r--clang/tools/libclang/RecursiveASTVisitor.h5
4 files changed, 17 insertions, 5 deletions
diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h
index eb5a8123c29..b5a4b5e36d7 100644
--- a/clang/include/clang/AST/RecursiveASTVisitor.h
+++ b/clang/include/clang/AST/RecursiveASTVisitor.h
@@ -2195,7 +2195,10 @@ DEF_TRAVERSE_STMT(ObjCEncodeExpr, {
})
DEF_TRAVERSE_STMT(ObjCIsaExpr, { })
DEF_TRAVERSE_STMT(ObjCIvarRefExpr, { })
-DEF_TRAVERSE_STMT(ObjCMessageExpr, { })
+DEF_TRAVERSE_STMT(ObjCMessageExpr, {
+ if (TypeSourceInfo *TInfo = S->getClassReceiverTypeInfo())
+ TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
+})
DEF_TRAVERSE_STMT(ObjCPropertyRefExpr, { })
DEF_TRAVERSE_STMT(ObjCSubscriptRefExpr, { })
DEF_TRAVERSE_STMT(ObjCProtocolExpr, { })
diff --git a/clang/test/Index/index-refs.m b/clang/test/Index/index-refs.m
index b82345f9c68..f25013b882f 100644
--- a/clang/test/Index/index-refs.m
+++ b/clang/test/Index/index-refs.m
@@ -13,6 +13,15 @@ void foo() {
@encode(struct FooS);
}
+@interface I
++(void)clsMeth;
+@end
+
+void foo2() {
+ [I clsMeth];
+}
+
// RUN: c-index-test -index-file %s | FileCheck %s
// CHECK: [indexEntityReference]: kind: objc-protocol | name: Prot | {{.*}} | loc: 12:27
// CHECK: [indexEntityReference]: kind: struct | name: FooS | {{.*}} | loc: 13:18
+// CHECK: [indexEntityReference]: kind: objc-class | name: I | {{.*}} | loc: 21:4
diff --git a/clang/tools/libclang/IndexBody.cpp b/clang/tools/libclang/IndexBody.cpp
index 54711e6332a..02ab885e62f 100644
--- a/clang/tools/libclang/IndexBody.cpp
+++ b/clang/tools/libclang/IndexBody.cpp
@@ -68,9 +68,6 @@ public:
}
bool VisitObjCMessageExpr(ObjCMessageExpr *E) {
- if (TypeSourceInfo *Cls = E->getClassReceiverTypeInfo())
- IndexCtx.indexTypeSourceInfo(Cls, Parent, ParentDC);
-
if (ObjCMethodDecl *MD = E->getMethodDecl())
IndexCtx.handleReference(MD, E->getSelectorStartLoc(),
Parent, ParentDC, E,
diff --git a/clang/tools/libclang/RecursiveASTVisitor.h b/clang/tools/libclang/RecursiveASTVisitor.h
index dd2c836d9cf..e45545ed1ad 100644
--- a/clang/tools/libclang/RecursiveASTVisitor.h
+++ b/clang/tools/libclang/RecursiveASTVisitor.h
@@ -2116,7 +2116,10 @@ DEF_TRAVERSE_STMT(ObjCEncodeExpr, {
})
DEF_TRAVERSE_STMT(ObjCIsaExpr, { })
DEF_TRAVERSE_STMT(ObjCIvarRefExpr, { })
-DEF_TRAVERSE_STMT(ObjCMessageExpr, { })
+DEF_TRAVERSE_STMT(ObjCMessageExpr, {
+ if (TypeSourceInfo *TInfo = S->getClassReceiverTypeInfo())
+ TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
+})
DEF_TRAVERSE_STMT(ObjCPropertyRefExpr, { })
DEF_TRAVERSE_STMT(ObjCSubscriptRefExpr, { })
DEF_TRAVERSE_STMT(ObjCProtocolExpr, { })
OpenPOWER on IntegriCloud