diff options
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 8 | ||||
| -rw-r--r-- | clang/test/SemaObjC/comptypes-5.m | 4 | 
2 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 2c16c073483..7d159269c1b 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -4323,10 +4323,10 @@ bool ASTContext::ObjCQualifiedIdTypesAreCompatible(QualType lhs, QualType rhs,        if (ObjCInterfaceDecl *lhsID = lhsOPT->getInterfaceDecl()) {          for (ObjCObjectPointerType::qual_iterator I = rhsQID->qual_begin(),               E = rhsQID->qual_end(); I != E; ++I) { -          // when comparing an id<P> on lhs with a static type on rhs, -          // see if static class implements all of id's protocols, directly or -          // through its super class and categories. -          if (lhsID->ClassImplementsProtocol(*I, true)) { +          // when comparing an id<P> on rhs with a static type on lhs, +          // static class must implement all of id's protocols directly or +          // indirectly through its super class. +          if (lhsID->ClassImplementsProtocol(*I, false)) {              match = true;              break;            } diff --git a/clang/test/SemaObjC/comptypes-5.m b/clang/test/SemaObjC/comptypes-5.m index aaf64462b18..f652f0e1a1f 100644 --- a/clang/test/SemaObjC/comptypes-5.m +++ b/clang/test/SemaObjC/comptypes-5.m @@ -26,8 +26,8 @@ int main()    MyOtherClass<MyProtocol> *obj_c_super_p_q = nil;    MyClass<MyProtocol> *obj_c_cat_p_q = nil; -  obj_c_cat_p = obj_id_p;    -  obj_c_super_p = obj_id_p;   +  obj_c_cat_p = obj_id_p;   // expected-warning {{assigning to 'MyClass *' from incompatible type 'id<MyProtocol>'}} +  obj_c_super_p = obj_id_p; // expected-warning {{assigning to 'MyOtherClass *' from incompatible type 'id<MyProtocol>'}}     obj_id_p = obj_c_cat_p;  /* Ok */    obj_id_p = obj_c_super_p; /* Ok */  | 

