From: Fariborz Jahanian Date: Tue, 2 Feb 2010 18:35:07 +0000 (+0000) Subject: Fix up rewriting of protocol qualified types in objc rewriter. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84aa9464a4542b7b63d3b1f9953f9169ce536527;p=clang Fix up rewriting of protocol qualified types in objc rewriter. Fixes radar 7589414. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95097 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/RewriteObjC.cpp b/lib/Frontend/RewriteObjC.cpp index df43da7eff..980c96ad17 100644 --- a/lib/Frontend/RewriteObjC.cpp +++ b/lib/Frontend/RewriteObjC.cpp @@ -1995,7 +1995,15 @@ static void scanToNextArgument(const char *&argRef) { } bool RewriteObjC::needToScanForQualifiers(QualType T) { - return T->isObjCQualifiedIdType() || T->isObjCQualifiedInterfaceType(); + if (const PointerType *PT = T->getAs()) { + if (PT->getPointeeType()->isObjCQualifiedIdType()) + return true; + } + if (T->isObjCObjectPointerType()) { + T = T->getPointeeType(); + return T->isObjCQualifiedInterfaceType(); + } + return false; } void RewriteObjC::RewriteObjCQualifiedInterfaceTypes(Expr *E) { diff --git a/test/Rewriter/rewrite-protocol-qualified.mm b/test/Rewriter/rewrite-protocol-qualified.mm new file mode 100644 index 0000000000..e93ddbba27 --- /dev/null +++ b/test/Rewriter/rewrite-protocol-qualified.mm @@ -0,0 +1,21 @@ +// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp +// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s +// radar 7589414 + +@protocol NSPortDelegate; +@interface NSConnection @end + +@interface NSMessagePort +- (void) clone; +@end + +@implementation NSMessagePort +- (void) clone { + NSConnection *conn = 0; + id *idc = 0; +} +@end + +// CHECK-LP: NSConnection /**/ *conn = 0; + +// CHECK-LP: id /**/ *idc = 0;