summaryrefslogtreecommitdiffstats
path: root/clang/tools/CIndex/CIndex.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-01-16 14:00:32 +0000
committerDouglas Gregor <dgregor@apple.com>2010-01-16 14:00:32 +0000
commit6c8959b71b10c9369fa13997bbc6d0772009f9a0 (patch)
tree1da22d9c8eeff8260fd3984e23f1b1b1201e9ac1 /clang/tools/CIndex/CIndex.cpp
parentb478d3e0fc818747b735e587b0cd55f84c431072 (diff)
downloadbcm5719-llvm-6c8959b71b10c9369fa13997bbc6d0772009f9a0.tar.gz
bcm5719-llvm-6c8959b71b10c9369fa13997bbc6d0772009f9a0.zip
Give CXCursor_ObjCSuperClassRef a sane encoding, which is only known
to CXCursor.cpp. llvm-svn: 93634
Diffstat (limited to 'clang/tools/CIndex/CIndex.cpp')
-rw-r--r--clang/tools/CIndex/CIndex.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/clang/tools/CIndex/CIndex.cpp b/clang/tools/CIndex/CIndex.cpp
index 0ecb54a86f4..e58a08a0d6c 100644
--- a/clang/tools/CIndex/CIndex.cpp
+++ b/clang/tools/CIndex/CIndex.cpp
@@ -209,6 +209,7 @@ class CDeclVisitor : public DeclVisitor<CDeclVisitor> {
CXCursor C = { CK, { ND, 0, 0 } };
Callback(CDecl, C, CData);
}
+
public:
CDeclVisitor(CXDecl C, CXDeclIterator cback, CXClientData D,
unsigned MaxPCHLevel) :
@@ -276,7 +277,10 @@ void CDeclVisitor::VisitObjCImplementationDecl(ObjCImplementationDecl *D) {
void CDeclVisitor::VisitObjCInterfaceDecl(ObjCInterfaceDecl *D) {
// Issue callbacks for super class.
if (D->getSuperClass())
- Call(CXCursor_ObjCSuperClassRef, D);
+ Callback(CDecl,
+ MakeCursorObjCSuperClassRef(D->getSuperClass(),
+ D->getSuperClassLoc()),
+ CData);
for (ObjCProtocolDecl::protocol_iterator I = D->protocol_begin(),
E = D->protocol_end(); I != E; ++I)
@@ -340,11 +344,9 @@ static SourceLocation getLocationFromCursor(CXCursor C,
assert(OID && "clang_getCursorLine(): Missing category decl");
return OID->getClassInterface()->getLocation();
}
- case CXCursor_ObjCSuperClassRef: {
- ObjCInterfaceDecl *OID = dyn_cast<ObjCInterfaceDecl>(ND);
- assert(OID && "clang_getCursorLine(): Missing interface decl");
- return OID->getSuperClassLoc();
- }
+ case CXCursor_ObjCSuperClassRef:
+ return getCursorObjCSuperClassRef(C).second;
+
case CXCursor_ObjCProtocolRef: {
ObjCProtocolDecl *OID = dyn_cast<ObjCProtocolDecl>(ND);
assert(OID && "clang_getCursorLine(): Missing protocol decl");
@@ -761,10 +763,8 @@ CXString clang_getCursorSpelling(CXCursor C) {
if (clang_isReference(C.kind)) {
switch (C.kind) {
case CXCursor_ObjCSuperClassRef: {
- ObjCInterfaceDecl *OID = dyn_cast<ObjCInterfaceDecl>(ND);
- assert(OID && "clang_getCursorLine(): Missing interface decl");
- return CIndexer::createCXString(OID->getSuperClass()->getIdentifier()
- ->getNameStart());
+ ObjCInterfaceDecl *Super = getCursorObjCSuperClassRef(C).first;
+ return CIndexer::createCXString(Super->getIdentifier()->getNameStart());
}
case CXCursor_ObjCClassRef: {
if (ObjCInterfaceDecl *OID = dyn_cast<ObjCInterfaceDecl>(ND))
OpenPOWER on IntegriCloud