1*67e74705SXin Li// RUN: rm -rf %t 2*67e74705SXin Li// RUN: %clang_cc1 -fblocks -objcmt-migrate-readwrite-property -objcmt-migrate-readonly-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11 3*67e74705SXin Li// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result 4*67e74705SXin Li// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result 5*67e74705SXin Li 6*67e74705SXin Li#define WEBKIT_OBJC_METHOD_ANNOTATION(ANNOTATION) ANNOTATION 7*67e74705SXin Li#define WEAK_IMPORT_ATTRIBUTE __attribute__((objc_arc_weak_reference_unavailable)) 8*67e74705SXin Li#define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER 9*67e74705SXin Li#define DEPRECATED __attribute__((deprecated)) 10*67e74705SXin Li 11*67e74705SXin Litypedef char BOOL; 12*67e74705SXin Li@class NSString; 13*67e74705SXin Li@protocol NSCopying @end 14*67e74705SXin Li 15*67e74705SXin Li@interface NSObject <NSCopying> 16*67e74705SXin Li@end 17*67e74705SXin Li 18*67e74705SXin Li@interface NSDictionary : NSObject 19*67e74705SXin Li@end 20*67e74705SXin Li 21*67e74705SXin Li@interface I : NSObject { 22*67e74705SXin Li int ivarVal; 23*67e74705SXin Li} 24*67e74705SXin Li- (void) setWeakProp : (NSString *__weak)Val; 25*67e74705SXin Li- (NSString *__weak) WeakProp; 26*67e74705SXin Li 27*67e74705SXin Li- (NSString *) StrongProp; 28*67e74705SXin Li- (void) setStrongProp : (NSString *)Val; 29*67e74705SXin Li 30*67e74705SXin Li- (NSString *) UnavailProp __attribute__((unavailable)); 31*67e74705SXin Li- (void) setUnavailProp : (NSString *)Val; 32*67e74705SXin Li 33*67e74705SXin Li- (NSString *) UnavailProp1 __attribute__((unavailable)); 34*67e74705SXin Li- (void) setUnavailProp1 : (NSString *)Val __attribute__((unavailable)); 35*67e74705SXin Li 36*67e74705SXin Li- (NSString *) UnavailProp2; 37*67e74705SXin Li- (void) setUnavailProp2 : (NSString *)Val __attribute__((unavailable)); 38*67e74705SXin Li 39*67e74705SXin Li- (NSDictionary*) undoAction; 40*67e74705SXin Li- (void) setUndoAction: (NSDictionary*)Arg; 41*67e74705SXin Li@end 42*67e74705SXin Li 43*67e74705SXin Li@implementation I 44*67e74705SXin Li@end 45*67e74705SXin Li 46*67e74705SXin Li@class NSArray; 47*67e74705SXin Li 48*67e74705SXin Li@interface MyClass2 { 49*67e74705SXin Li@private 50*67e74705SXin Li NSArray *_names1; 51*67e74705SXin Li NSArray *_names2; 52*67e74705SXin Li NSArray *_names3; 53*67e74705SXin Li NSArray *_names4; 54*67e74705SXin Li} 55*67e74705SXin Li- (void)setNames1:(NSArray *)names; 56*67e74705SXin Li- (void)setNames4:(__strong NSArray *)names; 57*67e74705SXin Li- (void)setNames3:(__strong NSArray *)names; 58*67e74705SXin Li- (void)setNames2:(NSArray *)names; 59*67e74705SXin Li- (NSArray *) names2; 60*67e74705SXin Li- (NSArray *)names3; 61*67e74705SXin Li- (__strong NSArray *)names4; 62*67e74705SXin Li- (NSArray *) names1; 63*67e74705SXin Li@end 64*67e74705SXin Li 65*67e74705SXin Li// Properties that contain the name "delegate" or "dataSource", 66*67e74705SXin Li// or have exact name "target" have unsafe_unretained attribute. 67*67e74705SXin Li@interface NSInvocation 68*67e74705SXin Li- (id)target; 69*67e74705SXin Li- (void)setTarget:(id)target; 70*67e74705SXin Li 71*67e74705SXin Li- (id) dataSource; 72*67e74705SXin Li 73*67e74705SXin Li// rdar://15509831 74*67e74705SXin Li- (id)delegate; 75*67e74705SXin Li 76*67e74705SXin Li- (id)xxxdelegateYYY; 77*67e74705SXin Li- (void)setXxxdelegateYYY:(id)delegate; 78*67e74705SXin Li 79*67e74705SXin Li- (void)setDataSource:(id)source; 80*67e74705SXin Li 81*67e74705SXin Li- (id)MYtarget; 82*67e74705SXin Li- (void)setMYtarget: (id)target; 83*67e74705SXin Li 84*67e74705SXin Li- (id)targetX; 85*67e74705SXin Li- (void)setTargetX: (id)t; 86*67e74705SXin Li 87*67e74705SXin Li- (int)value; 88*67e74705SXin Li- (void)setValue: (int)val; 89*67e74705SXin Li 90*67e74705SXin Li-(BOOL) isContinuous; 91*67e74705SXin Li-(void) setContinuous:(BOOL)value; 92*67e74705SXin Li 93*67e74705SXin Li- (id) isAnObject; 94*67e74705SXin Li- (void)setAnObject : (id) object; 95*67e74705SXin Li 96*67e74705SXin Li- (BOOL) isinValid; 97*67e74705SXin Li- (void) setInValid : (BOOL) arg; 98*67e74705SXin Li 99*67e74705SXin Li- (void) Nothing; 100*67e74705SXin Li- (int) Length; 101*67e74705SXin Li- (id) object; 102*67e74705SXin Li+ (double) D; 103*67e74705SXin Li- (void *)JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); 104*67e74705SXin Li- (BOOL)isIgnoringInteractionEvents; 105*67e74705SXin Li 106*67e74705SXin Li- (NSString *)getStringValue; 107*67e74705SXin Li- (BOOL)getCounterValue; 108*67e74705SXin Li- (void)setStringValue:(NSString *)stringValue AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER; 109*67e74705SXin Li- (NSDictionary *)getns_dixtionary; 110*67e74705SXin Li 111*67e74705SXin Li- (BOOL)is3bar; // watch out 112*67e74705SXin Li- (NSString *)get3foo; // watch out 113*67e74705SXin Li 114*67e74705SXin Li- (BOOL) getM; 115*67e74705SXin Li- (BOOL) getMA; 116*67e74705SXin Li- (BOOL) getALL; 117*67e74705SXin Li- (BOOL) getMANY; 118*67e74705SXin Li- (BOOL) getSome; 119*67e74705SXin Li@end 120*67e74705SXin Li 121*67e74705SXin Li 122*67e74705SXin Li@interface NSInvocation(CAT) 123*67e74705SXin Li- (id)target; 124*67e74705SXin Li- (void)setTarget:(id)target; 125*67e74705SXin Li 126*67e74705SXin Li- (id) dataSource; 127*67e74705SXin Li 128*67e74705SXin Li- (id)xxxdelegateYYY; 129*67e74705SXin Li- (void)setXxxdelegateYYY:(id)delegate; 130*67e74705SXin Li 131*67e74705SXin Li- (void)setDataSource:(id)source; 132*67e74705SXin Li 133*67e74705SXin Li- (id)MYtarget; 134*67e74705SXin Li- (void)setMYtarget: (id)target; 135*67e74705SXin Li 136*67e74705SXin Li- (id)targetX; 137*67e74705SXin Li- (void)setTargetX: (id)t; 138*67e74705SXin Li 139*67e74705SXin Li- (int)value; 140*67e74705SXin Li- (void)setValue: (int)val; 141*67e74705SXin Li 142*67e74705SXin Li-(BOOL) isContinuous; 143*67e74705SXin Li-(void) setContinuous:(BOOL)value; 144*67e74705SXin Li 145*67e74705SXin Li- (id) isAnObject; 146*67e74705SXin Li- (void)setAnObject : (id) object; 147*67e74705SXin Li 148*67e74705SXin Li- (BOOL) isinValid; 149*67e74705SXin Li- (void) setInValid : (BOOL) arg; 150*67e74705SXin Li 151*67e74705SXin Li- (void) Nothing; 152*67e74705SXin Li- (int) Length; 153*67e74705SXin Li- (id) object; 154*67e74705SXin Li+ (double) D; 155*67e74705SXin Li 156*67e74705SXin Li- (BOOL)is3bar; // watch out 157*67e74705SXin Li- (NSString *)get3foo; // watch out 158*67e74705SXin Li 159*67e74705SXin Li- (BOOL) getM; 160*67e74705SXin Li- (BOOL) getMA; 161*67e74705SXin Li- (BOOL) getALL; 162*67e74705SXin Li- (BOOL) getMANY; 163*67e74705SXin Li- (BOOL) getSome; 164*67e74705SXin Li@end 165*67e74705SXin Li 166*67e74705SXin LiDEPRECATED 167*67e74705SXin Li@interface I_DEP 168*67e74705SXin Li- (BOOL) isinValid; 169*67e74705SXin Li- (void) setInValid : (BOOL) arg; 170*67e74705SXin Li@end 171*67e74705SXin Li 172*67e74705SXin Li@interface AnotherOne 173*67e74705SXin Li- (BOOL) isinValid DEPRECATED; 174*67e74705SXin Li- (void) setInValid : (BOOL) arg; 175*67e74705SXin Li- (id)MYtarget; 176*67e74705SXin Li- (void)setMYtarget: (id)target DEPRECATED; 177*67e74705SXin Li- (BOOL) getM DEPRECATED; 178*67e74705SXin Li 179*67e74705SXin Li- (id)xxxdelegateYYY DEPRECATED; 180*67e74705SXin Li- (void)setXxxdelegateYYY:(id)delegate DEPRECATED; 181*67e74705SXin Li@end 182*67e74705SXin Li 183*67e74705SXin Li// rdar://14987909 184*67e74705SXin Li#define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0))) 185*67e74705SXin Li#define NORETURN __attribute__((noreturn)) 186*67e74705SXin Li#define ALIGNED __attribute__((aligned(16))) 187*67e74705SXin Li 188*67e74705SXin Li@interface NSURL 189*67e74705SXin Li// Do not infer a property. 190*67e74705SXin Li- (NSURL *)appStoreReceiptURL NS_AVAILABLE; 191*67e74705SXin Li- (void) setAppStoreReceiptURL : (NSURL *)object; 192*67e74705SXin Li 193*67e74705SXin Li- (NSURL *)appStoreReceiptURLX NS_AVAILABLE; 194*67e74705SXin Li- (void) setAppStoreReceiptURLX : (NSURL *)object NS_AVAILABLE; 195*67e74705SXin Li 196*67e74705SXin Li// Do not infer a property. 197*67e74705SXin Li- (NSURL *)appStoreReceiptURLY ; 198*67e74705SXin Li- (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; 199*67e74705SXin Li 200*67e74705SXin Li- (id)OkToInfer NS_AVAILABLE; 201*67e74705SXin Li 202*67e74705SXin Li// Do not infer a property. 203*67e74705SXin Li- (NSURL *)appStoreReceiptURLZ ; 204*67e74705SXin Li- (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; 205*67e74705SXin Li 206*67e74705SXin Li// Do not infer a property. 207*67e74705SXin Li- (id) t1 NORETURN NS_AVAILABLE; 208*67e74705SXin Li- (void) setT1 : (id) arg NS_AVAILABLE; 209*67e74705SXin Li 210*67e74705SXin Li- (id)method1 ALIGNED NS_AVAILABLE; 211*67e74705SXin Li- (void) setMethod1 : (id) object NS_AVAILABLE ALIGNED; 212*67e74705SXin Li 213*67e74705SXin Li- (NSURL *)init; // No Change 214*67e74705SXin Li+ (id)alloc; // No Change 215*67e74705SXin Li 216*67e74705SXin Li- (BOOL)is1stClass; // Not a valid property 217*67e74705SXin Li- (BOOL)isClass; // This is a valid property 'class' is not a keyword in ObjC 218*67e74705SXin Li- (BOOL)isDouble; // Not a valid property 219*67e74705SXin Li 220*67e74705SXin Li@end 221*67e74705SXin Li 222*67e74705SXin Li// rdar://15082818 223*67e74705SXin Li@class NSMutableDictionary; 224*67e74705SXin Li 225*67e74705SXin Li@interface NSArray 226*67e74705SXin Li- (id (^)(id, NSArray *, NSMutableDictionary *)) expressionBlock; 227*67e74705SXin Li- (id (^)(id, NSArray *, NSMutableDictionary *)) MyBlock; 228*67e74705SXin Li- (void) setMyBlock : (id (^)(id, NSArray *, NSMutableDictionary *)) bl; 229*67e74705SXin Li- (id (*)(id, NSArray *, NSMutableDictionary *)) expressionFuncptr; 230*67e74705SXin Li- (id (*)(id, NSArray *, NSMutableDictionary *)) MyFuncptr; 231*67e74705SXin Li- (void) setMyFuncptr : (id (*)(id, NSArray *, NSMutableDictionary *)) bl; 232*67e74705SXin Li@end 233*67e74705SXin Li 234*67e74705SXin Li// rdar://15231241 235*67e74705SXin Li@interface rdar15231241 236*67e74705SXin Li@property (nonatomic, readonly) double Ddelegate; 237*67e74705SXin Li@property (nonatomic, readonly) float Fdelegate; 238*67e74705SXin Li@property (nonatomic, readonly) int Idelegate; 239*67e74705SXin Li@property (nonatomic, readonly) BOOL Bdelegate; 240*67e74705SXin Li@end 241*67e74705SXin Li 242*67e74705SXin Li// rdar://19372798 243*67e74705SXin Li@protocol NSObject @end 244*67e74705SXin Li@protocol MyProtocol <NSObject> 245*67e74705SXin Li- (id)readonlyProperty; 246*67e74705SXin Li- (id)readWriteProperty; 247*67e74705SXin Li- (void)setReadWriteProperty:(id)readWriteProperty; 248*67e74705SXin Li@end 249