Objective-C modernizer. Avoid using property-dot syntax when

receiver type is not valid for property-dot syntz use.
rdar://19381786

llvm-svn: 226927
This commit is contained in:
Fariborz Jahanian 2015-01-23 19:23:42 +00:00
parent f1397fa7d7
commit 30609b8a78
3 changed files with 48 additions and 0 deletions

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

View 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

View 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