]> granicus.if.org Git - clang/commitdiff
Fixes a rewriting bug when type in a block argument type
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 3 Nov 2010 23:50:34 +0000 (23:50 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 3 Nov 2010 23:50:34 +0000 (23:50 +0000)
is a objc qualified class type. // rdar: //8608902

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118208 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Rewrite/RewriteObjC.cpp
test/Rewriter/rewrite-block-pointer.mm

index 068636c562c4826fe8613ee22c7d7097f562fc89..301266f5870140ae4548d6a7c5292aad37b34cf6 100644 (file)
@@ -4901,10 +4901,14 @@ bool RewriteObjC::PointerTypeTakesAnyObjCQualifiedType(QualType QT) {
   }
   if (FTP) {
     for (FunctionProtoType::arg_type_iterator I = FTP->arg_type_begin(),
-         E = FTP->arg_type_end(); I != E; ++I)
-      if ((*I)->isObjCQualifiedIdType() ||
-          (*I)->isObjCQualifiedInterfaceType())
+         E = FTP->arg_type_end(); I != E; ++I) {
+      if ((*I)->isObjCQualifiedIdType())
+        return true;
+      if ((*I)->isObjCObjectPointerType() &&
+          (*I)->getPointeeType()->isObjCQualifiedInterfaceType())
         return true;
+    }
+        
   }
   return false;
 }
index ba0048edddebcd93f90147f929530efb52122a56..7a90408ccfc47d0c33b35f96a8d4ecb80a637963 100644 (file)
@@ -78,3 +78,7 @@ typedef void (^DVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodePro
                        void(^arg1)(), int i1, void(^arg)(id<CoreDAVAccountInfoProvider>),
                         int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);
 
+
+@interface I @end
+@interface INTF @end
+void (^BLINT)(I<CoreDAVAccountInfoProvider>* ARG, INTF<CodeProvider, CoreDAVAccountInfoProvider>* ARG1);