Home | History | Annotate | Download | only in Rewriter
      1 // RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
      2 // RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
      3 
      4 @protocol P @end
      5 @protocol P1 @end
      6 @interface INTF
      7 {
      8   id CLASS_IVAR;
      9   id<P, P1> Q_IVAR;
     10 
     11   void (^_block)(id<P>);
     12   void (*_fptr)(void (^_block)(id<P>));
     13   char CLASS_EXT_IVAR;
     14   id<P, P1> (^ext_block)(id<P>, INTF<P,P1>*, INTF*);
     15   id IMPL_IVAR;
     16   double D_IMPL_IVAR;
     17   INTF<P> *(*imp_fptr)(void (^_block)(id<P>, INTF<P,P1>*));
     18   id arr[100];
     19 }
     20 @end
     21 
     22 @implementation INTF @end
     23 
     24 @interface MISC_INTF
     25 {
     26   id CLASS_IVAR;
     27   id<P, P1> Q_IVAR;
     28 
     29   void (^_block)(id<P>);
     30   void (*_fptr)(void (^_block)(id<P>));
     31   unsigned int BF : 8;
     32 }
     33 @end
     34 
     35 @interface MISC_INTF()
     36 {
     37   char CLASS_EXT_IVAR;
     38   id<P, P1> (^ext_block)(id<P>, MISC_INTF<P,P1>*, MISC_INTF*);
     39 }
     40 @end
     41 
     42 @interface MISC_INTF() {
     43   int II1;
     44   double DD1; }
     45 @end
     46 
     47 @interface MISC_INTF() { int II2; double DD2; }
     48 @end
     49 
     50 @interface MISC_INTF() { int II3; 
     51   double DD3; }
     52 @end
     53 
     54 @interface MISC_INTF() { int II4; double DD4; 
     55 }
     56 @end
     57 
     58 @implementation MISC_INTF
     59 {
     60   id IMPL_IVAR;
     61   double D_IMPL_IVAR;
     62   MISC_INTF<P> *(*imp_fptr)(void (^_block)(id<P>, MISC_INTF<P,P1>*));
     63 }
     64 @end
     65