blob: 29d8298c82e62831007b2a9632702bceddd1208c [file] [log] [blame]
Daniel Dunbar417dd172008-10-04 23:47:28 +00001//-*- ObjC -*-
2
3@protocol P0;
4
5@protocol P1
6-(void) fm0;
7@end
8
9@class B;
10
11@interface Root
Fariborz Jahanian6fc9e7a2013-03-11 22:26:33 +000012@property(readonly) int p0;
Daniel Dunbar417dd172008-10-04 23:47:28 +000013@end
14
15@interface A : Root <P1> {
16 int iv0;
17 B *iv1;
Daniel Dunbar45e84232009-10-27 19:21:30 +000018 B<P1> *iv2;
Daniel Dunbar417dd172008-10-04 23:47:28 +000019}
20
Fariborz Jahanian567c8df2008-12-06 01:12:43 +000021@property(readonly) int p0;
Daniel Dunbar417dd172008-10-04 23:47:28 +000022@property(assign,nonatomic,readwrite) int p1;
23@property(copy) id p2;
24@property(retain) id p3;
25@property(assign, getter=getme, setter=setme:) id p4;
Daniel Dunbar45e84232009-10-27 19:21:30 +000026@property(assign, readwrite) id p5;
Daniel Dunbar417dd172008-10-04 23:47:28 +000027@end
28
29@implementation A
30@dynamic p0;
31@synthesize p1 = iv0;
Daniel Dunbar45e84232009-10-27 19:21:30 +000032
33// Property type can differ from ivar type.
34@synthesize p5 = iv2;
35
Daniel Dunbar417dd172008-10-04 23:47:28 +000036+(void) fm0 {
37 [super fm0];
38}
39-(void) im0 {
Daniel Dunbar8de8c362008-10-24 08:39:46 +000040 const char *s0 = __func__;
41 const char *s1 = __FUNCTION__;
42 const char *s2 = __PRETTY_FUNCTION__;
Daniel Dunbar417dd172008-10-04 23:47:28 +000043 [super im0];
Daniel Dunbar63c3a5f2008-10-17 23:04:32 +000044 int x = super.p0;
Daniel Dunbar417dd172008-10-04 23:47:28 +000045}
46-(void) im1: (int) x, ... {
47}
48@end
49
50@implementation C : A
51@end
52
Daniel Dunbar417dd172008-10-04 23:47:28 +000053@interface A (Cat)
54@end
55
56@implementation A (Cat)
57@end
Daniel Dunbar417dd172008-10-04 23:47:28 +000058
Daniel Dunbarfe345572009-03-05 22:59:19 +000059@interface B
60@end
61
Daniel Dunbar417dd172008-10-04 23:47:28 +000062int f0(id x) {
63 @synchronized(x) {
64 }
Daniel Dunbar417dd172008-10-04 23:47:28 +000065
66 @try {
67 @throw x;
Daniel Dunbarfe345572009-03-05 22:59:19 +000068
Daniel Dunbar417dd172008-10-04 23:47:28 +000069 } @catch(A *e) {
70 @throw;
Daniel Dunbarfe345572009-03-05 22:59:19 +000071
72 // @catch param doesn't require name.
73 } @catch(B *) {
74
Daniel Dunbar417dd172008-10-04 23:47:28 +000075 } @finally {
76 ;
77 }
78
79 for (id y in x) {
80 break;
81 }
Daniel Dunbar417dd172008-10-04 23:47:28 +000082}
83
Daniel Dunbarbd5e5a52009-04-21 21:16:23 +000084#ifndef __OBJC2__
Daniel Dunbar417dd172008-10-04 23:47:28 +000085struct s0 {
86 @defs(A);
87};
Daniel Dunbarbd5e5a52009-04-21 21:16:23 +000088#endif