summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-11-03 23:50:34 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-11-03 23:50:34 +0000
commit733dde6035511b37a99df693e72d12b665e5b4cd (patch)
treeba3f4b6ee6870e0a8ed616af72f046d162c1456f
parentcd536df63c7e4ee84e12ef4516dcf2da17482b5e (diff)
downloadbcm5719-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.cpp10
-rw-r--r--clang/test/Rewriter/rewrite-block-pointer.mm4
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);
OpenPOWER on IntegriCloud