[llvm-branch-commits] [cfe-tag] r100920 - in /cfe/tags/Apple/clang/clang/tools/clang: lib/AST/ASTContext.cpp test/SemaObjC/block-type-safety.m

Ted Kremenek kremenek at apple.com
Fri Apr 9 21:41:03 PDT 2010


Author: kremenek
Date: Fri Apr  9 23:41:03 2010
New Revision: 100920

URL: http://llvm.org/viewvc/llvm-project?rev=100920&view=rev
Log:
Merge in r100533.

Modified:
    cfe/tags/Apple/clang/clang/tools/clang/lib/AST/ASTContext.cpp
    cfe/tags/Apple/clang/clang/tools/clang/test/SemaObjC/block-type-safety.m

Modified: cfe/tags/Apple/clang/clang/tools/clang/lib/AST/ASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/tags/Apple/clang/clang/tools/clang/lib/AST/ASTContext.cpp?rev=100920&r1=100919&r2=100920&view=diff
==============================================================================
--- cfe/tags/Apple/clang/clang/tools/clang/lib/AST/ASTContext.cpp (original)
+++ cfe/tags/Apple/clang/clang/tools/clang/lib/AST/ASTContext.cpp Fri Apr  9 23:41:03 2010
@@ -4116,15 +4116,14 @@
 bool ASTContext::canAssignObjCInterfacesInBlockPointer(
                                          const ObjCObjectPointerType *LHSOPT,
                                          const ObjCObjectPointerType *RHSOPT) {
-  if (RHSOPT->isObjCBuiltinType() ||
-      LHSOPT->isObjCIdType() || LHSOPT->isObjCQualifiedIdType())
+  if (RHSOPT->isObjCBuiltinType() || LHSOPT->isObjCIdType())
     return true;
   
   if (LHSOPT->isObjCBuiltinType()) {
     return RHSOPT->isObjCBuiltinType() || RHSOPT->isObjCQualifiedIdType();
   }
   
-  if (RHSOPT->isObjCQualifiedIdType())
+  if (LHSOPT->isObjCQualifiedIdType() || RHSOPT->isObjCQualifiedIdType())
     return ObjCQualifiedIdTypesAreCompatible(QualType(LHSOPT,0),
                                              QualType(RHSOPT,0),
                                              false);

Modified: cfe/tags/Apple/clang/clang/tools/clang/test/SemaObjC/block-type-safety.m
URL: http://llvm.org/viewvc/llvm-project/cfe/tags/Apple/clang/clang/tools/clang/test/SemaObjC/block-type-safety.m?rev=100920&r1=100919&r2=100920&view=diff
==============================================================================
--- cfe/tags/Apple/clang/clang/tools/clang/test/SemaObjC/block-type-safety.m (original)
+++ cfe/tags/Apple/clang/clang/tools/clang/test/SemaObjC/block-type-safety.m Fri Apr  9 23:41:03 2010
@@ -94,3 +94,12 @@
    }
 @end
 
+ at protocol P, P2;
+void f4(void (^f)(id<P> x)) {
+  NSArray<P2> *b;
+  f(b);// expected-warning {{incompatible type passing 'NSArray<P2> *', expected 'id<P>'}}
+}
+
+void test3() {
+  f4(^(NSArray<P2>* a) { });  // expected-error {{incompatible block pointer types passing 'void (^)(NSArray<P2> *)', expected 'void (^)(id<P>)'}}
+}





More information about the llvm-branch-commits mailing list