forked from OSchip/llvm-project
[libclang] Stick to the silly notion that a forward class/protocol
declaration is a reference. rdar://10749990 llvm-svn: 149733
This commit is contained in:
parent
cc481596e4
commit
fcf8d1f82a
|
@ -560,6 +560,20 @@ bool CursorVisitor::VisitDeclContext(DeclContext *DC) {
|
|||
if (D->getLexicalDeclContext() != DC)
|
||||
continue;
|
||||
CXCursor Cursor = MakeCXCursor(D, TU, RegionOfInterest);
|
||||
|
||||
// FIXME: ObjCClassRef/ObjCProtocolRef for forward class/protocol
|
||||
// declarations is a mismatch with the compiler semantics.
|
||||
if (Cursor.kind == CXCursor_ObjCInterfaceDecl) {
|
||||
ObjCInterfaceDecl *ID = cast<ObjCInterfaceDecl>(D);
|
||||
if (!ID->isThisDeclarationADefinition())
|
||||
Cursor = MakeCursorObjCClassRef(ID, ID->getLocation(), TU);
|
||||
|
||||
} else if (Cursor.kind == CXCursor_ObjCProtocolDecl) {
|
||||
ObjCProtocolDecl *PD = cast<ObjCProtocolDecl>(D);
|
||||
if (!PD->isThisDeclarationADefinition())
|
||||
Cursor = MakeCursorObjCProtocolRef(PD, PD->getLocation(), TU);
|
||||
}
|
||||
|
||||
const llvm::Optional<bool> &V = shouldVisitCursor(Cursor);
|
||||
if (!V.hasValue())
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue