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