From: Fariborz Jahanian Date: Fri, 23 Jan 2015 19:23:42 +0000 (+0000) Subject: Objective-C modernizer. Avoid using property-dot syntax when X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9498e79e0db23454a29ec26fa56534d95c02b140;p=clang Objective-C modernizer. Avoid using property-dot syntax when receiver type is not valid for property-dot syntz use. rdar://19381786 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@226927 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index 52c424c000..48a4931c20 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/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/test/ARCMT/objcmt-property-dot-syntax.m b/test/ARCMT/objcmt-property-dot-syntax.m index aaa3ea1981..f1038a844b 100644 --- a/test/ARCMT/objcmt-property-dot-syntax.m +++ b/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)qsome : (SEL)selsome +{ + [obj setCount : 100]; + [some setCount : [some count]]; + [qsome setCount : [qsome count]]; +} +@end + diff --git a/test/ARCMT/objcmt-property-dot-syntax.m.result b/test/ARCMT/objcmt-property-dot-syntax.m.result index 44b7cf1075..b7561e526d 100644 --- a/test/ARCMT/objcmt-property-dot-syntax.m.result +++ b/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)qsome : (SEL)selsome +{ + obj.count = 100; + [some setCount : [some count]]; + [qsome setCount : [qsome count]]; +} +@end +