blob: dbbf205fcd6b04dc0342af8fda7451354b57ecc1 [file] [log] [blame]
Shih-wei Liaof8fd82b2010-02-10 11:10:31 -08001//-*- ObjC -*-
2
3@protocol P0;
4
5@protocol P1
6-(void) fm0;
7@end
8
9@class B;
10
11@interface Root
12@end
13
14@interface A : Root <P1> {
15 int iv0;
16 B *iv1;
17 B<P1> *iv2;
18}
19
20@property(readonly) int p0;
21@property(assign,nonatomic,readwrite) int p1;
22@property(copy) id p2;
23@property(retain) id p3;
24@property(assign, getter=getme, setter=setme:) id p4;
25@property(assign, readwrite) id p5;
26@end
27
28@implementation A
29@dynamic p0;
30@synthesize p1 = iv0;
31
32// Property type can differ from ivar type.
33@synthesize p5 = iv2;
34
35+(void) fm0 {
36 [super fm0];
37}
38-(void) im0 {
39 const char *s0 = __func__;
40 const char *s1 = __FUNCTION__;
41 const char *s2 = __PRETTY_FUNCTION__;
42 [super im0];
43 int x = super.p0;
44}
45-(void) im1: (int) x, ... {
46}
47@end
48
49@implementation C : A
50@end
51
52@interface A (Cat)
53@end
54
55@implementation A (Cat)
56@end
57
58@interface B
59@end
60
61int f0(id x) {
62 @synchronized(x) {
63 }
64
65 @try {
66 @throw x;
67
68 } @catch(A *e) {
69 @throw;
70
71 // @catch param doesn't require name.
72 } @catch(B *) {
73
74 } @finally {
75 ;
76 }
77
78 for (id y in x) {
79 break;
80 }
81}
82
83#ifndef __OBJC2__
84struct s0 {
85 @defs(A);
86};
87#endif