blob: 5196b8244dbba673e21e2dc16d28f2c9908abfbf [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -fnext-runtime --emit-llvm -o %t %s
Fariborz Jahanianfef30b52008-12-09 20:23:04 +00002
3@interface Object
4- (id) new;
5@end
6
7@interface Tester : Object
8@property char PropertyAtomic_char;
9@property short PropertyAtomic_short;
10@property int PropertyAtomic_int;
11@property long PropertyAtomic_long;
12@property long long PropertyAtomic_longlong;
13@property float PropertyAtomic_float;
14@property double PropertyAtomic_double;
15@property(assign) id PropertyAtomic_id;
16@property(retain) id PropertyAtomicRetained_id;
17@property(copy) id PropertyAtomicRetainedCopied_id;
18@property(retain) id PropertyAtomicRetainedGCOnly_id;
19@property(copy) id PropertyAtomicRetainedCopiedGCOnly_id;
20@end
21
22@implementation Tester
23@dynamic PropertyAtomic_char;
24@dynamic PropertyAtomic_short;
25@dynamic PropertyAtomic_int;
26@dynamic PropertyAtomic_long;
27@dynamic PropertyAtomic_longlong;
28@dynamic PropertyAtomic_float;
29@dynamic PropertyAtomic_double;
30@dynamic PropertyAtomic_id;
31@dynamic PropertyAtomicRetained_id;
32@dynamic PropertyAtomicRetainedCopied_id;
33@dynamic PropertyAtomicRetainedGCOnly_id;
34@dynamic PropertyAtomicRetainedCopiedGCOnly_id;
35@end
36
37@interface SubClass : Tester
38{
39 char PropertyAtomic_char;
40 short PropertyAtomic_short;
41 int PropertyAtomic_int;
42 long PropertyAtomic_long;
43 long long PropertyAtomic_longlong;
44 float PropertyAtomic_float;
45 double PropertyAtomic_double;
46 id PropertyAtomic_id;
47 id PropertyAtomicRetained_id;
48 id PropertyAtomicRetainedCopied_id;
49 id PropertyAtomicRetainedGCOnly_id;
50 id PropertyAtomicRetainedCopiedGCOnly_id;
51}
52@end
53
54@implementation SubClass
55@synthesize PropertyAtomic_char;
56@synthesize PropertyAtomic_short;
57@synthesize PropertyAtomic_int;
58@synthesize PropertyAtomic_long;
59@synthesize PropertyAtomic_longlong;
60@synthesize PropertyAtomic_float;
61@synthesize PropertyAtomic_double;
62@synthesize PropertyAtomic_id;
63@synthesize PropertyAtomicRetained_id;
64@synthesize PropertyAtomicRetainedCopied_id;
65@synthesize PropertyAtomicRetainedGCOnly_id;
66@synthesize PropertyAtomicRetainedCopiedGCOnly_id;
67@end
68
69int main()
70{
71 SubClass *f = [SubClass new];
72 f.PropertyAtomic_int = 1;
73
74 f.PropertyAtomic_int += 3;
75
76 f.PropertyAtomic_int -= 4;
77 return f.PropertyAtomic_int;
78}