// RUN: rm -rf %t // RUN: %clang_cc1 -fblocks -objcmt-migrate-readwrite-property -objcmt-ns-nonatomic-iosonly -objcmt-migrate-readonly-property -objcmt-atomic-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11 // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result // RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result #define WEBKIT_OBJC_METHOD_ANNOTATION(ANNOTATION) ANNOTATION #define WEAK_IMPORT_ATTRIBUTE __attribute__((objc_arc_weak_reference_unavailable)) #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER #define DEPRECATED __attribute__((deprecated)) // rdar://15442742 #if TARGET_OS_IPHONE #define NS_NONATOMIC_IOSONLY nonatomic #else #define NS_NONATOMIC_IOSONLY atomic #endif typedef char BOOL; @class NSString; @protocol NSCopying @end @interface NSObject <NSCopying> @end @interface NSDictionary : NSObject @end @interface I : NSObject { int ivarVal; } @property (NS_NONATOMIC_IOSONLY, weak) NSString *WeakProp; @property (NS_NONATOMIC_IOSONLY, strong) NSString *StrongProp; @property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp __attribute__((unavailable)); - (void) setUnavailProp : (NSString *)Val; @property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp1 __attribute__((unavailable)); @property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp2; - (void) setUnavailProp2 : (NSString *)Val __attribute__((unavailable)); @property (NS_NONATOMIC_IOSONLY, copy) NSDictionary *undoAction; @end @implementation I @end @class NSArray; @interface MyClass2 { @private NSArray *_names1; NSArray *_names2; NSArray *_names3; NSArray *_names4; } @property (NS_NONATOMIC_IOSONLY, strong) NSArray *names2; @property (NS_NONATOMIC_IOSONLY, strong) NSArray *names3; @property (NS_NONATOMIC_IOSONLY, strong) NSArray *names4; @property (NS_NONATOMIC_IOSONLY, strong) NSArray *names1; @end // Properties that contain the name "delegate" or "dataSource", // or have exact name "target" have unsafe_unretained attribute. @interface NSInvocation @property (NS_NONATOMIC_IOSONLY, assign) id target; @property (NS_NONATOMIC_IOSONLY, assign) id dataSource; @property (NS_NONATOMIC_IOSONLY, assign) id xxxdelegateYYY; @property (NS_NONATOMIC_IOSONLY, strong) id MYtarget; @property (NS_NONATOMIC_IOSONLY, strong) id targetX; @property (NS_NONATOMIC_IOSONLY) int value; @property (NS_NONATOMIC_IOSONLY, getter=isContinuous) BOOL continuous; - (id) isAnObject; - (void)setAnObject : (id) object; @property (NS_NONATOMIC_IOSONLY, getter=isinValid, readonly) BOOL inValid; - (void) setInValid : (BOOL) arg; - (void) Nothing; @property (NS_NONATOMIC_IOSONLY, readonly) int Length; @property (NS_NONATOMIC_IOSONLY, readonly, strong) id object; + (double) D; @property (NS_NONATOMIC_IOSONLY, readonly) void *JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); @property (NS_NONATOMIC_IOSONLY, getter=isIgnoringInteractionEvents, readonly) BOOL ignoringInteractionEvents; @property (NS_NONATOMIC_IOSONLY, getter=getStringValue, strong) NSString *stringValue; @property (NS_NONATOMIC_IOSONLY, getter=getCounterValue, readonly) BOOL counterValue; @property (NS_NONATOMIC_IOSONLY, getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out @property (NS_NONATOMIC_IOSONLY, getter=getM, readonly) BOOL m; @property (NS_NONATOMIC_IOSONLY, getter=getMA, readonly) BOOL MA; @property (NS_NONATOMIC_IOSONLY, getter=getALL, readonly) BOOL ALL; @property (NS_NONATOMIC_IOSONLY, getter=getMANY, readonly) BOOL MANY; @property (NS_NONATOMIC_IOSONLY, getter=getSome, readonly) BOOL some; @end @interface NSInvocation(CAT) @property (NS_NONATOMIC_IOSONLY, assign) id target; @property (NS_NONATOMIC_IOSONLY, assign) id dataSource; @property (NS_NONATOMIC_IOSONLY, assign) id xxxdelegateYYY; @property (NS_NONATOMIC_IOSONLY, strong) id MYtarget; @property (NS_NONATOMIC_IOSONLY, strong) id targetX; @property (NS_NONATOMIC_IOSONLY) int value; @property (NS_NONATOMIC_IOSONLY, getter=isContinuous) BOOL continuous; - (id) isAnObject; - (void)setAnObject : (id) object; @property (NS_NONATOMIC_IOSONLY, getter=isinValid, readonly) BOOL inValid; - (void) setInValid : (BOOL) arg; - (void) Nothing; @property (NS_NONATOMIC_IOSONLY, readonly) int Length; @property (NS_NONATOMIC_IOSONLY, readonly, strong) id object; + (double) D; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out @property (NS_NONATOMIC_IOSONLY, getter=getM, readonly) BOOL m; @property (NS_NONATOMIC_IOSONLY, getter=getMA, readonly) BOOL MA; @property (NS_NONATOMIC_IOSONLY, getter=getALL, readonly) BOOL ALL; @property (NS_NONATOMIC_IOSONLY, getter=getMANY, readonly) BOOL MANY; @property (NS_NONATOMIC_IOSONLY, getter=getSome, readonly) BOOL some; @end DEPRECATED @interface I_DEP - (BOOL) isinValid; - (void) setInValid : (BOOL) arg; @end @interface AnotherOne - (BOOL) isinValid DEPRECATED; - (void) setInValid : (BOOL) arg; - (id)MYtarget; - (void)setMYtarget: (id)target DEPRECATED; - (BOOL) getM DEPRECATED; - (id)xxxdelegateYYY DEPRECATED; - (void)setXxxdelegateYYY:(id)delegate DEPRECATED; @end // rdar://14987909 #define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0))) #define NORETURN __attribute__((noreturn)) #define ALIGNED __attribute__((aligned(16))) @interface NSURL // Do not infer a property. @property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURL NS_AVAILABLE; - (void) setAppStoreReceiptURL : (NSURL *)object; @property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLX NS_AVAILABLE; // Do not infer a property. @property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLY ; - (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; @property (NS_NONATOMIC_IOSONLY, readonly, strong) id OkToInfer NS_AVAILABLE; // Do not infer a property. @property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLZ ; - (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; // Do not infer a property. - (id) t1 NORETURN NS_AVAILABLE; - (void) setT1 : (id) arg NS_AVAILABLE; @property (NS_NONATOMIC_IOSONLY, strong) id method1 ALIGNED NS_AVAILABLE; - (NSURL *)init; // No Change + (id)alloc; // No Change - (BOOL)is1stClass; // Not a valid property @property (NS_NONATOMIC_IOSONLY, getter=isClass, readonly) BOOL class; // This is a valid property 'class' is not a keyword in ObjC - (BOOL)isDouble; // Not a valid property @end // rdar://15082818 @class NSMutableDictionary; @interface NSArray @property (NS_NONATOMIC_IOSONLY, readonly, copy) id (^expressionBlock)(id, NSArray *, NSMutableDictionary *); @property (NS_NONATOMIC_IOSONLY, copy) id (^MyBlock)(id, NSArray *, NSMutableDictionary *); @property (NS_NONATOMIC_IOSONLY, readonly) id (*expressionFuncptr)(id, NSArray *, NSMutableDictionary *); @property (NS_NONATOMIC_IOSONLY) id (*MyFuncptr)(id, NSArray *, NSMutableDictionary *); @end