diff options
Diffstat (limited to 'lib/Index')
-rw-r--r-- | lib/Index/Analyzer.cpp | 8 | ||||
-rw-r--r-- | lib/Index/ResolveLocation.cpp | 27 |
2 files changed, 12 insertions, 23 deletions
diff --git a/lib/Index/Analyzer.cpp b/lib/Index/Analyzer.cpp index 1354fe6be0..6be35ab4a3 100644 --- a/lib/Index/Analyzer.cpp +++ b/lib/Index/Analyzer.cpp @@ -180,7 +180,7 @@ public: if (IsInstanceMethod) return false; - MsgD = Msg->getClassReceiver()->getAs<ObjCInterfaceType>()->getDecl(); + MsgD = Msg->getClassReceiver()->getAs<ObjCObjectType>()->getInterface(); break; } @@ -189,7 +189,7 @@ public: if (IsInstanceMethod) return false; - MsgD = Msg->getSuperType()->getAs<ObjCInterfaceType>()->getDecl(); + MsgD = Msg->getSuperType()->getAs<ObjCObjectType>()->getInterface(); break; case ObjCMessageExpr::SuperInstance: @@ -292,12 +292,12 @@ public: case ObjCMessageExpr::Class: CanBeClassMethod = true; - MsgD = Msg->getClassReceiver()->getAs<ObjCInterfaceType>()->getDecl(); + MsgD = Msg->getClassReceiver()->getAs<ObjCObjectType>()->getInterface(); break; case ObjCMessageExpr::SuperClass: CanBeClassMethod = true; - MsgD = Msg->getSuperType()->getAs<ObjCInterfaceType>()->getDecl(); + MsgD = Msg->getSuperType()->getAs<ObjCObjectType>()->getInterface(); break; case ObjCMessageExpr::SuperInstance: diff --git a/lib/Index/ResolveLocation.cpp b/lib/Index/ResolveLocation.cpp index 4bb15943bb..8ef8f3ba7f 100644 --- a/lib/Index/ResolveLocation.cpp +++ b/lib/Index/ResolveLocation.cpp @@ -130,7 +130,7 @@ public: ASTLocation VisitFunctionTypeLoc(FunctionTypeLoc TL); ASTLocation VisitArrayTypeLoc(ArrayTypeLoc TL); ASTLocation VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL); - ASTLocation VisitObjCObjectPointerTypeLoc(ObjCObjectPointerTypeLoc TL); + ASTLocation VisitObjCObjectTypeLoc(ObjCObjectTypeLoc TL); ASTLocation VisitTypeLoc(TypeLoc TL); }; @@ -454,6 +454,13 @@ ASTLocation TypeLocResolver::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) if (ContainsLocation(TL.getNameLoc())) return ASTLocation(ParentDecl, TL.getIFaceDecl(), TL.getNameLoc()); + return ASTLocation(ParentDecl, TL); +} + +ASTLocation TypeLocResolver::VisitObjCObjectTypeLoc(ObjCObjectTypeLoc TL) { + assert(ContainsLocation(TL) && + "Should visit only after verifying that loc is in range"); + for (unsigned i = 0; i != TL.getNumProtocols(); ++i) { SourceLocation L = TL.getProtocolLoc(i); RangePos RP = CheckRange(L); @@ -466,24 +473,6 @@ ASTLocation TypeLocResolver::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) return ASTLocation(ParentDecl, TL); } -ASTLocation TypeLocResolver::VisitObjCObjectPointerTypeLoc(ObjCObjectPointerTypeLoc TL) { - assert(ContainsLocation(TL) && - "Should visit only after verifying that loc is in range"); - - if (TL.hasProtocolsAsWritten()) { - for (unsigned i = 0; i != TL.getNumProtocols(); ++i) { - SourceLocation L = TL.getProtocolLoc(i); - RangePos RP = CheckRange(L); - if (RP == AfterLoc) - break; - if (RP == ContainsLoc) - return ASTLocation(ParentDecl, TL.getProtocol(i), L); - } - } - - return ASTLocation(ParentDecl, TL); -} - ASTLocation TypeLocResolver::VisitTypeLoc(TypeLoc TL) { assert(ContainsLocation(TL) && "Should visit only after verifying that loc is in range"); |