]> granicus.if.org Git - clang/commitdiff
Objective-C modernizer. Avoid using property-dot syntax when
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 23 Jan 2015 19:23:42 +0000 (19:23 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 23 Jan 2015 19:23:42 +0000 (19:23 +0000)
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

lib/ARCMigrate/ObjCMT.cpp
test/ARCMT/objcmt-property-dot-syntax.m
test/ARCMT/objcmt-property-dot-syntax.m.result

index 52c424c000f82ba9ec43f8e9885021ea2acea565..48a4931c207391b2120289b56d68b35e18b2e9cc 100644 (file)
@@ -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;
index aaa3ea19818370dd0818b21c7095a9b636eed6c4..f1038a844b464857e786df3afa1c5280c66c5ae6 100644 (file)
@@ -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
+
index 44b7cf107592bf03a1d231810cce371f9e790a9a..b7561e526d098cae6699fae03a4add7717a4bb1f 100644 (file)
@@ -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
+