xref: /aosp_15_r20/external/clang/test/SemaObjC/property-atomic-redecl.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
2*67e74705SXin Li
3*67e74705SXin Li@interface A
4*67e74705SXin Li@end
5*67e74705SXin Li
6*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass.
7*67e74705SXin Li@interface AtomicInheritanceSuper
8*67e74705SXin Li@property (readonly) A *property;
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Li@interface AtomicInheritanceSuper()
12*67e74705SXin Li@property (nonatomic,readwrite,retain) A *property;
13*67e74705SXin Li@end
14*67e74705SXin Li
15*67e74705SXin Li@interface AtomicInheritanceSub : AtomicInheritanceSuper
16*67e74705SXin Li@property (readonly) A *property;
17*67e74705SXin Li@end
18*67e74705SXin Li
19*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass.
20*67e74705SXin Li@interface AtomicInheritanceSuper2
21*67e74705SXin Li@property (readonly) A *property;
22*67e74705SXin Li@end
23*67e74705SXin Li
24*67e74705SXin Li@interface AtomicInheritanceSub2 : AtomicInheritanceSuper2
25*67e74705SXin Li@property (nonatomic, readwrite, retain) A *property;
26*67e74705SXin Li@end
27*67e74705SXin Li
28*67e74705SXin Li@interface ReadonlyAtomic
29*67e74705SXin Li@property (readonly, nonatomic) A *property;
30*67e74705SXin Li@end
31*67e74705SXin Li
32*67e74705SXin Li@interface ReadonlyAtomic ()
33*67e74705SXin Li@property (readwrite) A *property;
34*67e74705SXin Li@end
35*67e74705SXin Li
36*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass.
37*67e74705SXin Li@interface AtomicInheritanceSuper3
38*67e74705SXin Li@property (readonly,atomic) A *property; // expected-note{{property declared here}}
39*67e74705SXin Li@end
40*67e74705SXin Li
41*67e74705SXin Li@interface AtomicInheritanceSuper3()
42*67e74705SXin Li@property (nonatomic,readwrite,retain) A *property; // expected-warning{{'atomic' attribute on property 'property' does not match the property inherited from 'AtomicInheritanceSuper3'}}
43*67e74705SXin Li@end
44*67e74705SXin Li
45*67e74705SXin Li@interface AtomicInheritanceSub3 : AtomicInheritanceSuper3
46*67e74705SXin Li@property (readonly) A *property;
47*67e74705SXin Li@end
48*67e74705SXin Li
49*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass.
50*67e74705SXin Li@interface AtomicInheritanceSuper4
51*67e74705SXin Li@property (readonly, atomic) A *property; // expected-note{{property declared here}}
52*67e74705SXin Li@end
53*67e74705SXin Li
54*67e74705SXin Li@interface AtomicInheritanceSub4 : AtomicInheritanceSuper4
55*67e74705SXin Li@property (nonatomic, readwrite, retain) A *property; // expected-warning{{atomic' attribute on property 'property' does not match the property inherited from 'AtomicInheritanceSuper4'}}
56*67e74705SXin Li@end
57*67e74705SXin Li
58