| // RUN: rm -rf %t | 
 | // RUN: %clang_cc1 -fblocks -objcmt-migrate-readwrite-property -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))  | 
 |  | 
 | typedef char BOOL; | 
 | @class NSString; | 
 | @protocol NSCopying @end | 
 |  | 
 | @interface NSObject <NSCopying> | 
 | @end | 
 |  | 
 | @interface NSDictionary : NSObject | 
 | @end | 
 |  | 
 | @interface I : NSObject { | 
 |   int ivarVal; | 
 | } | 
 | - (void) setWeakProp : (NSString *__weak)Val; | 
 | - (NSString *__weak) WeakProp; | 
 |  | 
 | - (NSString *) StrongProp; | 
 | - (void) setStrongProp : (NSString *)Val; | 
 |  | 
 | - (NSString *) UnavailProp  __attribute__((unavailable)); | 
 | - (void) setUnavailProp  : (NSString *)Val; | 
 |  | 
 | - (NSString *) UnavailProp1  __attribute__((unavailable)); | 
 | - (void) setUnavailProp1  : (NSString *)Val  __attribute__((unavailable)); | 
 |  | 
 | - (NSString *) UnavailProp2; | 
 | - (void) setUnavailProp2  : (NSString *)Val  __attribute__((unavailable)); | 
 |  | 
 | - (NSDictionary*) undoAction; | 
 | - (void) setUndoAction: (NSDictionary*)Arg; | 
 | @end | 
 |  | 
 | @implementation I | 
 | @end | 
 |  | 
 | @class NSArray; | 
 |  | 
 | @interface MyClass2  { | 
 | @private | 
 |     NSArray *_names1; | 
 |     NSArray *_names2; | 
 |     NSArray *_names3; | 
 |     NSArray *_names4; | 
 | } | 
 | - (void)setNames1:(NSArray *)names; | 
 | - (void)setNames4:(__strong NSArray *)names; | 
 | - (void)setNames3:(__strong NSArray *)names; | 
 | - (void)setNames2:(NSArray *)names; | 
 | - (NSArray *) names2; | 
 | - (NSArray *)names3; | 
 | - (__strong NSArray *)names4; | 
 | - (NSArray *) names1; | 
 | @end | 
 |  | 
 | // Properties that contain the name "delegate" or "dataSource", | 
 | // or have exact name "target" have unsafe_unretained attribute. | 
 | @interface NSInvocation  | 
 | - (id)target; | 
 | - (void)setTarget:(id)target; | 
 |  | 
 | - (id) dataSource; | 
 |  | 
 | - (id)xxxdelegateYYY; | 
 | - (void)setXxxdelegateYYY:(id)delegate; | 
 |  | 
 | - (void)setDataSource:(id)source; | 
 |  | 
 | - (id)MYtarget; | 
 | - (void)setMYtarget: (id)target; | 
 |  | 
 | - (id)targetX; | 
 | - (void)setTargetX: (id)t; | 
 |   | 
 | - (int)value; | 
 | - (void)setValue: (int)val; | 
 |  | 
 | -(BOOL) isContinuous; | 
 | -(void) setContinuous:(BOOL)value; | 
 |  | 
 | - (id) isAnObject; | 
 | - (void)setAnObject : (id) object; | 
 |  | 
 | - (BOOL) isinValid; | 
 | - (void) setInValid : (BOOL) arg; | 
 |  | 
 | - (void) Nothing; | 
 | - (int) Length; | 
 | - (id) object; | 
 | + (double) D; | 
 | - (void *)JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); | 
 | - (BOOL)isIgnoringInteractionEvents; | 
 |  | 
 | - (NSString *)getStringValue; | 
 | - (BOOL)getCounterValue; | 
 | - (void)setStringValue:(NSString *)stringValue AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER; | 
 | - (NSDictionary *)getns_dixtionary; | 
 |  | 
 | - (BOOL)is3bar; // watch out | 
 | - (NSString *)get3foo; // watch out | 
 |  | 
 | - (BOOL) getM; | 
 | - (BOOL) getMA; | 
 | - (BOOL) getALL; | 
 | - (BOOL) getMANY; | 
 | - (BOOL) getSome; | 
 | @end | 
 |  | 
 |  | 
 | @interface NSInvocation(CAT) | 
 | - (id)target; | 
 | - (void)setTarget:(id)target; | 
 |  | 
 | - (id) dataSource; | 
 |  | 
 | - (id)xxxdelegateYYY; | 
 | - (void)setXxxdelegateYYY:(id)delegate; | 
 |  | 
 | - (void)setDataSource:(id)source; | 
 |  | 
 | - (id)MYtarget; | 
 | - (void)setMYtarget: (id)target; | 
 |  | 
 | - (id)targetX; | 
 | - (void)setTargetX: (id)t; | 
 |  | 
 | - (int)value; | 
 | - (void)setValue: (int)val; | 
 |  | 
 | -(BOOL) isContinuous; | 
 | -(void) setContinuous:(BOOL)value; | 
 |  | 
 | - (id) isAnObject; | 
 | - (void)setAnObject : (id) object; | 
 |  | 
 | - (BOOL) isinValid; | 
 | - (void) setInValid : (BOOL) arg; | 
 |  | 
 | - (void) Nothing; | 
 | - (int) Length; | 
 | - (id) object; | 
 | + (double) D; | 
 |  | 
 | - (BOOL)is3bar; // watch out | 
 | - (NSString *)get3foo; // watch out | 
 |  | 
 | - (BOOL) getM; | 
 | - (BOOL) getMA; | 
 | - (BOOL) getALL; | 
 | - (BOOL) getMANY; | 
 | - (BOOL) getSome; | 
 | @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. | 
 | - (NSURL *)appStoreReceiptURL NS_AVAILABLE; | 
 | - (void) setAppStoreReceiptURL : (NSURL *)object; | 
 |  | 
 | - (NSURL *)appStoreReceiptURLX NS_AVAILABLE; | 
 | - (void) setAppStoreReceiptURLX : (NSURL *)object NS_AVAILABLE; | 
 |  | 
 | // Do not infer a property. | 
 | - (NSURL *)appStoreReceiptURLY ; | 
 | - (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; | 
 |  | 
 | - (id)OkToInfer NS_AVAILABLE; | 
 |  | 
 | // Do not infer a property. | 
 | - (NSURL *)appStoreReceiptURLZ ; | 
 | - (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; | 
 |  | 
 | // Do not infer a property. | 
 | - (id) t1 NORETURN NS_AVAILABLE; | 
 | - (void) setT1 : (id) arg NS_AVAILABLE; | 
 |  | 
 | - (id)method1 ALIGNED NS_AVAILABLE; | 
 | - (void) setMethod1 : (id) object NS_AVAILABLE ALIGNED; | 
 |  | 
 | - (NSURL *)init;  // No Change | 
 | + (id)alloc;      // No Change | 
 |  | 
 | - (BOOL)is1stClass; // Not a valid property | 
 | - (BOOL)isClass;    // 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 | 
 | - (id (^)(id, NSArray *, NSMutableDictionary *)) expressionBlock; | 
 | - (id (^)(id, NSArray *, NSMutableDictionary *)) MyBlock; | 
 | - (void) setMyBlock : (id (^)(id, NSArray *, NSMutableDictionary *)) bl; | 
 | - (id (*)(id, NSArray *, NSMutableDictionary *)) expressionFuncptr; | 
 | - (id (*)(id, NSArray *, NSMutableDictionary *)) MyFuncptr; | 
 | - (void) setMyFuncptr : (id (*)(id, NSArray *, NSMutableDictionary *)) bl; | 
 | @end |