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