diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-11-03 23:50:34 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-11-03 23:50:34 +0000 |
commit | 733dde6035511b37a99df693e72d12b665e5b4cd (patch) | |
tree | ba3f4b6ee6870e0a8ed616af72f046d162c1456f | |
parent | cd536df63c7e4ee84e12ef4516dcf2da17482b5e (diff) | |
download | bcm5719-llvm-733dde6035511b37a99df693e72d12b665e5b4cd.tar.gz bcm5719-llvm-733dde6035511b37a99df693e72d12b665e5b4cd.zip |
Fixes a rewriting bug when type in a block argument type
is a objc qualified class type. // rdar: //8608902
llvm-svn: 118208
-rw-r--r-- | clang/lib/Rewrite/RewriteObjC.cpp | 10 | ||||
-rw-r--r-- | clang/test/Rewriter/rewrite-block-pointer.mm | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/Rewrite/RewriteObjC.cpp b/clang/lib/Rewrite/RewriteObjC.cpp index 068636c562c..301266f5870 100644 --- a/clang/lib/Rewrite/RewriteObjC.cpp +++ b/clang/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/clang/test/Rewriter/rewrite-block-pointer.mm b/clang/test/Rewriter/rewrite-block-pointer.mm index ba0048eddde..7a90408ccfc 100644 --- a/clang/test/Rewriter/rewrite-block-pointer.mm +++ b/clang/test/Rewriter/rewrite-block-pointer.mm @@ -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); |