forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| //-*- ObjC -*-
 | |
| 
 | |
| @protocol P0;
 | |
| 
 | |
| @protocol P1 
 | |
| -(void) fm0;
 | |
| @end
 | |
| 
 | |
| @class B;
 | |
| 
 | |
| @interface Root
 | |
| @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
 |