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