xref: /aosp_15_r20/external/clang/test/SemaObjC/property-in-class-extension-1.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1  -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -verify -Weverything %s
2*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -fsyntax-only -verify -Weverything %s
3*67e74705SXin Li// rdar://12103400
4*67e74705SXin Li
5*67e74705SXin Li@class NSString;
6*67e74705SXin Li
7*67e74705SXin Li@interface MyClass
8*67e74705SXin Li
9*67e74705SXin Li@property (nonatomic, readonly) NSString* addingMemoryModel;
10*67e74705SXin Li
11*67e74705SXin Li@property (nonatomic, copy, readonly) NSString* matchingMemoryModel;
12*67e74705SXin Li
13*67e74705SXin Li@property (atomic, retain, readonly) NSString* addingNoNewMemoryModel;
14*67e74705SXin Li
15*67e74705SXin Li@property (readonly) NSString* none;
16*67e74705SXin Li@property (readonly) NSString* none1;
17*67e74705SXin Li
18*67e74705SXin Li@property (assign, readonly) NSString* changeMemoryModel; // expected-note {{property declared here}}
19*67e74705SXin Li
20*67e74705SXin Li@property (readonly) __weak id weak_prop;
21*67e74705SXin Li@property (readonly) __weak id weak_prop1;
22*67e74705SXin Li
23*67e74705SXin Li@property (assign, readonly) NSString* assignProperty;
24*67e74705SXin Li
25*67e74705SXin Li@property (readonly) NSString* readonlyProp;
26*67e74705SXin Li
27*67e74705SXin Li
28*67e74705SXin Li
29*67e74705SXin Li@end
30*67e74705SXin Li
31*67e74705SXin Li@interface MyClass ()
32*67e74705SXin Li{
33*67e74705SXin Li  NSString* _name;
34*67e74705SXin Li}
35*67e74705SXin Li
36*67e74705SXin Li@property (nonatomic, copy) NSString* addingMemoryModel;
37*67e74705SXin Li@property (nonatomic, copy) NSString* matchingMemoryModel;
38*67e74705SXin Li@property () NSString* addingNoNewMemoryModel;
39*67e74705SXin Li@property () NSString* none;
40*67e74705SXin Li@property (readwrite, retain) NSString* none1;
41*67e74705SXin Li
42*67e74705SXin Li@property (retain) NSString* changeMemoryModel; // expected-warning {{property attribute in class extension does not match the primary class}}
43*67e74705SXin Li@property () __weak id weak_prop;
44*67e74705SXin Li@property (readwrite) __weak id weak_prop1;
45*67e74705SXin Li
46*67e74705SXin Li@property (assign, readwrite) NSString* assignProperty;
47*67e74705SXin Li@property (assign) NSString* readonlyProp;
48*67e74705SXin Li@end
49*67e74705SXin Li
50*67e74705SXin Li// rdar://12214070
51*67e74705SXin Li@interface radar12214070
52*67e74705SXin Li@property (nonatomic, atomic, readonly) float propertyName; // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
53*67e74705SXin Li
54*67e74705SXin Li@property (nonatomic, readonly) float propertyName2; // expected-note {{property declared here}}
55*67e74705SXin Li@end
56*67e74705SXin Li
57*67e74705SXin Li@interface radar12214070 ()
58*67e74705SXin Li@property (atomic, nonatomic, readonly, readwrite) float propertyName; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}} \
59*67e74705SXin Li		// expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
60*67e74705SXin Li
61*67e74705SXin Li@property (atomic, readwrite) float propertyName2; // expected-warning {{'atomic' attribute on property 'propertyName2' does not match the property inherited from 'radar12214070'}}
62*67e74705SXin Li@end
63*67e74705SXin Li
64