Fix up rewriting of protocol qualified types in objc rewriter.

Fixes radar 7589414.

llvm-svn: 95097
This commit is contained in:
Fariborz Jahanian 2010-02-02 18:35:07 +00:00
parent ccdb5ff17d
commit 06769f9197
2 changed files with 30 additions and 1 deletions

View File

@ -1995,7 +1995,15 @@ static void scanToNextArgument(const char *&argRef) {
} }
bool RewriteObjC::needToScanForQualifiers(QualType T) { 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) { void RewriteObjC::RewriteObjCQualifiedInterfaceTypes(Expr *E) {

View File

@ -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;