diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-01-16 14:00:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-01-16 14:00:32 +0000 |
commit | 6c8959b71b10c9369fa13997bbc6d0772009f9a0 (patch) | |
tree | 1da22d9c8eeff8260fd3984e23f1b1b1201e9ac1 /clang/tools/CIndex/CIndex.cpp | |
parent | b478d3e0fc818747b735e587b0cd55f84c431072 (diff) | |
download | bcm5719-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.cpp | 20 |
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)) |