forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			89 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
//-*- ObjC -*-
 | 
						|
 | 
						|
@protocol P0;
 | 
						|
 | 
						|
@protocol P1 
 | 
						|
-(void) fm0;
 | 
						|
@end
 | 
						|
 | 
						|
@class B;
 | 
						|
 | 
						|
@interface Root
 | 
						|
@property(readonly) int p0;
 | 
						|
@end
 | 
						|
 | 
						|
@interface A : Root <P1> {
 | 
						|
  int iv0;
 | 
						|
  B *iv1;
 | 
						|
  B<P1> *iv2;
 | 
						|
}
 | 
						|
 | 
						|
@property(readonly) int p0;
 | 
						|
@property(assign,nonatomic,readwrite) int p1;
 | 
						|
@property(copy) id p2;
 | 
						|
@property(retain) id p3;
 | 
						|
@property(assign, getter=getme, setter=setme:) id p4;
 | 
						|
@property(assign, readwrite) id p5;
 | 
						|
@end
 | 
						|
 | 
						|
@implementation A
 | 
						|
@dynamic p0;
 | 
						|
@synthesize p1 = iv0;
 | 
						|
 | 
						|
// Property type can differ from ivar type.
 | 
						|
@synthesize p5 = iv2;
 | 
						|
 | 
						|
+(void) fm0 {
 | 
						|
  [super fm0];
 | 
						|
}
 | 
						|
-(void) im0 {
 | 
						|
  const char *s0 = __func__;
 | 
						|
  const char *s1 = __FUNCTION__;
 | 
						|
  const char *s2 = __PRETTY_FUNCTION__;
 | 
						|
  [super im0];
 | 
						|
  int x = super.p0;
 | 
						|
}
 | 
						|
-(void) im1: (int) x, ... {
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@implementation C : A
 | 
						|
@end
 | 
						|
 | 
						|
@interface A (Cat)
 | 
						|
@end
 | 
						|
 | 
						|
@implementation A (Cat)
 | 
						|
@end
 | 
						|
 | 
						|
@interface B
 | 
						|
@end
 | 
						|
 | 
						|
int f0(id x) {
 | 
						|
  @synchronized(x) {
 | 
						|
  }
 | 
						|
 | 
						|
  @try {
 | 
						|
    @throw x;
 | 
						|
 | 
						|
  } @catch(A *e) {
 | 
						|
    @throw;
 | 
						|
 | 
						|
    // @catch param doesn't require name.
 | 
						|
  } @catch(B *) {
 | 
						|
 | 
						|
  } @finally {
 | 
						|
    ;
 | 
						|
  }
 | 
						|
 | 
						|
  for (id y in x) {
 | 
						|
    break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
#ifndef __OBJC2__
 | 
						|
struct s0 {
 | 
						|
  @defs(A);
 | 
						|
};
 | 
						|
#endif
 |