xref: /aosp_15_r20/external/clang/test/SemaObjC/property-atomic-bool.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10 -ast-dump "%s" | FileCheck %s
2*67e74705SXin Li
3*67e74705SXin Li// CHECK: TypedefDecl {{.*}} referenced AtomicBool '_Atomic(_Bool)'
4*67e74705SXin Li// CHECK:  AtomicType {{.*}} '_Atomic(_Bool)'
5*67e74705SXin Li// CHECK:   BuiltinType {{.*}} '_Bool'
6*67e74705SXin Li// CHECK: ObjCInterfaceDecl {{.*}} A0
7*67e74705SXin Li// CHECK:  ObjCPropertyDecl {{.*}} p '_Atomic(_Bool)' {{.*}} nonatomic
8*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - p '_Bool'
9*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - setP: 'void'
10*67e74705SXin Li// CHECK:   ParmVarDecl {{.*}} p '_Bool'
11*67e74705SXin Li// CHECK: ObjCInterfaceDecl {{.*}} A1
12*67e74705SXin Li// CHECK:  ObjCPropertyDecl {{.*}} p 'AtomicBool':'_Atomic(_Bool)' {{.*}} nonatomic
13*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - p '_Bool'
14*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - setP: 'void'
15*67e74705SXin Li// CHECK:   ParmVarDecl {{.*}} p '_Bool'
16*67e74705SXin Li// CHECK: ObjCInterfaceDecl {{.*}} A2
17*67e74705SXin Li// CHECK:  ObjCIvarDecl {{.*}} p '_Atomic(_Bool)' protected
18*67e74705SXin Li// CHECK:  ObjCPropertyDecl {{.*}} p '_Atomic(_Bool)'
19*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - p '_Bool'
20*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - setP: 'void'
21*67e74705SXin Li// CHECK:   ParmVarDecl {{.*}} p '_Bool'
22*67e74705SXin Li// CHECK: ObjCInterfaceDecl {{.*}} A3
23*67e74705SXin Li// CHECK:  ObjCIvarDecl {{.*}} p 'AtomicBool':'_Atomic(_Bool)' protected
24*67e74705SXin Li// CHECK:  ObjCPropertyDecl {{.*}} p 'AtomicBool':'_Atomic(_Bool)'
25*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - p '_Bool'
26*67e74705SXin Li// CHECK:  ObjCMethodDecl {{.*}} implicit - setP: 'void'
27*67e74705SXin Li// CHECK:   ParmVarDecl {{.*}} p '_Bool'
28*67e74705SXin Li
29*67e74705SXin Litypedef _Atomic(_Bool) AtomicBool;
30*67e74705SXin Li
31*67e74705SXin Li@interface A0
32*67e74705SXin Li@property(nonatomic) _Atomic(_Bool) p;
33*67e74705SXin Li@end
34*67e74705SXin Li@implementation A0
35*67e74705SXin Li@end
36*67e74705SXin Li
37*67e74705SXin Li@interface A1
38*67e74705SXin Li@property(nonatomic) AtomicBool p;
39*67e74705SXin Li@end
40*67e74705SXin Li@implementation A1
41*67e74705SXin Li@end
42*67e74705SXin Li
43*67e74705SXin Li@interface A2 {
44*67e74705SXin Li  _Atomic(_Bool) p;
45*67e74705SXin Li}
46*67e74705SXin Li@property _Atomic(_Bool) p;
47*67e74705SXin Li@end
48*67e74705SXin Li
49*67e74705SXin Li@implementation A2
50*67e74705SXin Li@synthesize p;
51*67e74705SXin Li@end
52*67e74705SXin Li
53*67e74705SXin Li@interface A3 {
54*67e74705SXin Li  AtomicBool p;
55*67e74705SXin Li}
56*67e74705SXin Li@property AtomicBool p;
57*67e74705SXin Li@end
58*67e74705SXin Li
59*67e74705SXin Li@implementation A3
60*67e74705SXin Li@synthesize p;
61*67e74705SXin Li@end
62