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