diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2015-01-23 19:23:42 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2015-01-23 19:23:42 +0000 |
| commit | 30609b8a78c150e6e70e39e083f5274eb82a77ef (patch) | |
| tree | 528d2be6e55177fa673b9f6f6e82d5e5a3c01da1 /clang | |
| parent | f1397fa7d799bee470816c31f4f75235ba1bab08 (diff) | |
| download | bcm5719-llvm-30609b8a78c150e6e70e39e083f5274eb82a77ef.tar.gz bcm5719-llvm-30609b8a78c150e6e70e39e083f5274eb82a77ef.zip | |
Objective-C modernizer. Avoid using property-dot syntax when
receiver type is not valid for property-dot syntz use.
rdar://19381786
llvm-svn: 226927
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/ARCMigrate/ObjCMT.cpp | 4 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-property-dot-syntax.m | 22 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-property-dot-syntax.m.result | 22 |
3 files changed, 48 insertions, 0 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp index 52c424c000f..48a4931c207 100644 --- a/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/clang/lib/ARCMigrate/ObjCMT.cpp @@ -245,6 +245,10 @@ namespace { (Msg->getReceiverKind() != ObjCMessageExpr::Instance && Msg->getReceiverKind() != ObjCMessageExpr::SuperInstance)) return false; + if (const Expr *Receiver = Msg->getInstanceReceiver()) + if (Receiver->getType()->isObjCBuiltinType()) + return false; + const ObjCMethodDecl *Method = Msg->getMethodDecl(); if (!Method) return false; diff --git a/clang/test/ARCMT/objcmt-property-dot-syntax.m b/clang/test/ARCMT/objcmt-property-dot-syntax.m index aaa3ea19818..f1038a844b4 100644 --- a/clang/test/ARCMT/objcmt-property-dot-syntax.m +++ b/clang/test/ARCMT/objcmt-property-dot-syntax.m @@ -68,3 +68,25 @@ P* fun(); id testRdar19038838(Rdar19038838 *obj) { return [obj newItem]; } + +// rdar://19381786 +@interface rdar19381786 : NSObject +{ + rdar19381786* obj; +} +@property int count; +@end + +@protocol PR +@property int count; +@end + +@implementation rdar19381786 +-(void)test:(id)some : (id<PR>)qsome : (SEL)selsome +{ + [obj setCount : 100]; + [some setCount : [some count]]; + [qsome setCount : [qsome count]]; +} +@end + diff --git a/clang/test/ARCMT/objcmt-property-dot-syntax.m.result b/clang/test/ARCMT/objcmt-property-dot-syntax.m.result index 44b7cf10759..b7561e526d0 100644 --- a/clang/test/ARCMT/objcmt-property-dot-syntax.m.result +++ b/clang/test/ARCMT/objcmt-property-dot-syntax.m.result @@ -68,3 +68,25 @@ P* fun(); id testRdar19038838(Rdar19038838 *obj) { return obj.newItem; } + +// rdar://19381786 +@interface rdar19381786 : NSObject +{ + rdar19381786* obj; +} +@property int count; +@end + +@protocol PR +@property int count; +@end + +@implementation rdar19381786 +-(void)test:(id)some : (id<PR>)qsome : (SEL)selsome +{ + obj.count = 100; + [some setCount : [some count]]; + [qsome setCount : [qsome count]]; +} +@end + |

