1// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2// expected-no-diagnostics
3
4@interface Tester
5@property char PropertyAtomic_char;
6@property short PropertyAtomic_short;
7@property int PropertyAtomic_int;
8@property long PropertyAtomic_long;
9@property long long PropertyAtomic_longlong;
10@property float PropertyAtomic_float;
11@property double PropertyAtomic_double;
12@property(assign) id PropertyAtomic_id;
13@property(retain) id PropertyAtomicRetained_id;
14@property(copy) id PropertyAtomicRetainedCopied_id;
15@property(retain) id PropertyAtomicRetainedGCOnly_id;
16@property(copy) id PropertyAtomicRetainedCopiedGCOnly_id;
17@end
18
19@implementation Tester
20@dynamic PropertyAtomic_char;
21@dynamic PropertyAtomic_short;
22@dynamic PropertyAtomic_int;
23@dynamic PropertyAtomic_long;
24@dynamic PropertyAtomic_longlong;
25@dynamic PropertyAtomic_float;
26@dynamic PropertyAtomic_double;
27@dynamic PropertyAtomic_id;
28@dynamic PropertyAtomicRetained_id;
29@dynamic PropertyAtomicRetainedCopied_id;
30@dynamic PropertyAtomicRetainedGCOnly_id;
31@dynamic PropertyAtomicRetainedCopiedGCOnly_id;
32@end
33
34@interface SubClass : Tester
35{
36    char PropertyAtomic_char;
37    short PropertyAtomic_short;
38    int PropertyAtomic_int;
39    long PropertyAtomic_long;
40    long long PropertyAtomic_longlong;
41    float PropertyAtomic_float;
42    double PropertyAtomic_double;
43    id PropertyAtomic_id;
44    id PropertyAtomicRetained_id;
45    id PropertyAtomicRetainedCopied_id;
46    id PropertyAtomicRetainedGCOnly_id;
47    id PropertyAtomicRetainedCopiedGCOnly_id;
48}
49@end
50
51@implementation SubClass
52@synthesize PropertyAtomic_char;
53@synthesize PropertyAtomic_short;
54@synthesize PropertyAtomic_int;
55@synthesize PropertyAtomic_long;
56@synthesize PropertyAtomic_longlong;
57@synthesize PropertyAtomic_float;
58@synthesize PropertyAtomic_double;
59@synthesize PropertyAtomic_id;
60@synthesize PropertyAtomicRetained_id;
61@synthesize PropertyAtomicRetainedCopied_id;
62@synthesize PropertyAtomicRetainedGCOnly_id;
63@synthesize PropertyAtomicRetainedCopiedGCOnly_id;
64@end
65