From: Fariborz Jahanian Date: Wed, 3 Nov 2010 23:50:34 +0000 (+0000) Subject: Fixes a rewriting bug when type in a block argument type X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=06de2cfe0b46e525ba8618536b12aecfbd12d127;p=clang Fixes a rewriting bug when type in a block argument type 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 --- diff --git a/lib/Rewrite/RewriteObjC.cpp b/lib/Rewrite/RewriteObjC.cpp index 068636c562..301266f587 100644 --- a/lib/Rewrite/RewriteObjC.cpp +++ b/lib/Rewrite/RewriteObjC.cpp @@ -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; } diff --git a/test/Rewriter/rewrite-block-pointer.mm b/test/Rewriter/rewrite-block-pointer.mm index ba0048eddd..7a90408ccf 100644 --- a/test/Rewriter/rewrite-block-pointer.mm +++ b/test/Rewriter/rewrite-block-pointer.mm @@ -78,3 +78,7 @@ typedef void (^DVDisc)(id discoveredInfo, id), int success, id Info); + +@interface I @end +@interface INTF @end +void (^BLINT)(I* ARG, INTF* ARG1);