summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-02-02 18:35:07 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-02-02 18:35:07 +0000
commit06769f919735a3d5d64ab45003f1c517c8b865ea (patch)
tree434be479efe64824dad907cc3c10ee99c9bc4a9c /clang
parentccdb5ff17d9619956f0b79f2453604847d88debe (diff)
downloadbcm5719-llvm-06769f919735a3d5d64ab45003f1c517c8b865ea.tar.gz
bcm5719-llvm-06769f919735a3d5d64ab45003f1c517c8b865ea.zip
Fix up rewriting of protocol qualified types in objc rewriter.
Fixes radar 7589414. llvm-svn: 95097
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Frontend/RewriteObjC.cpp10
-rw-r--r--clang/test/Rewriter/rewrite-protocol-qualified.mm21
2 files changed, 30 insertions, 1 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp
index df43da7efff..980c96ad17d 100644
--- a/clang/lib/Frontend/RewriteObjC.cpp
+++ b/clang/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<PointerType>()) {
+ 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/clang/test/Rewriter/rewrite-protocol-qualified.mm b/clang/test/Rewriter/rewrite-protocol-qualified.mm
new file mode 100644
index 00000000000..e93ddbba277
--- /dev/null
+++ b/clang/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 <NSPortDelegate> *conn = 0;
+ id <NSPortDelegate> *idc = 0;
+}
+@end
+
+// CHECK-LP: NSConnection /*<NSPortDelegate>*/ *conn = 0;
+
+// CHECK-LP: id /*<NSPortDelegate>*/ *idc = 0;
OpenPOWER on IntegriCloud