xref: /aosp_15_r20/external/clang/test/ARCMT/objcmt-property.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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