• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -emit-llvm -o %t %s
2
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}
79