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 -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp 3*67e74705SXin Li 4*67e74705SXin Li@interface NSCheapMutableString { 5*67e74705SXin Li@private 6*67e74705SXin Li struct S s0; 7*67e74705SXin Li union { 8*67e74705SXin Li char *fat; 9*67e74705SXin Li unsigned char *thin; 10*67e74705SXin Li } contents; 11*67e74705SXin Li 12*67e74705SXin Li struct { 13*67e74705SXin Li unsigned int isFat:1; 14*67e74705SXin Li unsigned int freeWhenDone:1; 15*67e74705SXin Li unsigned int refs:30; 16*67e74705SXin Li } flags; 17*67e74705SXin Li 18*67e74705SXin Li struct S { 19*67e74705SXin Li int iS1; 20*67e74705SXin Li double dS1; 21*67e74705SXin Li } others; 22*67e74705SXin Li 23*67e74705SXin Li union U { 24*67e74705SXin Li int iU1; 25*67e74705SXin Li double dU1; 26*67e74705SXin Li } u_others; 27*67e74705SXin Li 28*67e74705SXin Li enum { 29*67e74705SXin Li One, Two 30*67e74705SXin Li } E1; 31*67e74705SXin Li 32*67e74705SXin Li enum e { 33*67e74705SXin Li Yes = 1, 34*67e74705SXin Li No = 0 35*67e74705SXin Li } BoOl; 36*67e74705SXin Li 37*67e74705SXin Li struct S s1; 38*67e74705SXin Li 39*67e74705SXin Li enum e E2; 40*67e74705SXin Li 41*67e74705SXin Li union { 42*67e74705SXin Li char *fat; 43*67e74705SXin Li unsigned char *thin; 44*67e74705SXin Li } Last_contents; 45*67e74705SXin Li 46*67e74705SXin Li struct { 47*67e74705SXin Li unsigned int isFat:1; 48*67e74705SXin Li unsigned int freeWhenDone:1; 49*67e74705SXin Li unsigned int refs:30; 50*67e74705SXin Li } Last_flags; 51*67e74705SXin Li} 52*67e74705SXin Li@end 53*67e74705SXin Li 54*67e74705SXin Li@interface III { 55*67e74705SXin Li@private 56*67e74705SXin Li struct S s0; 57*67e74705SXin Li 58*67e74705SXin Li union { 59*67e74705SXin Li char *fat; 60*67e74705SXin Li unsigned char *thin; 61*67e74705SXin Li } contents; 62*67e74705SXin Li 63*67e74705SXin Li struct { 64*67e74705SXin Li unsigned int isFat:1; 65*67e74705SXin Li unsigned int freeWhenDone:1; 66*67e74705SXin Li unsigned int refs:30; 67*67e74705SXin Li } flags; 68*67e74705SXin Li 69*67e74705SXin Li enum { 70*67e74705SXin Li One1 = 1000, Two1, Three1 71*67e74705SXin Li } E1; 72*67e74705SXin Li 73*67e74705SXin Li struct S s1; 74*67e74705SXin Li 75*67e74705SXin Li enum e E2; 76*67e74705SXin Li 77*67e74705SXin Li union { 78*67e74705SXin Li char *fat; 79*67e74705SXin Li unsigned char *thin; 80*67e74705SXin Li } Last_contents; 81*67e74705SXin Li 82*67e74705SXin Li struct { 83*67e74705SXin Li unsigned int isFat:1; 84*67e74705SXin Li unsigned int freeWhenDone:1; 85*67e74705SXin Li unsigned int refs:30; 86*67e74705SXin Li } Last_flags; 87*67e74705SXin Li} 88*67e74705SXin Li@end 89*67e74705SXin Li 90*67e74705SXin Lienum OUTSIDE { 91*67e74705SXin Li yes 92*67e74705SXin Li}; 93*67e74705SXin Li 94*67e74705SXin Li@interface MoreEnumTests { 95*67e74705SXin Li@private 96*67e74705SXin Li enum INSIDE { 97*67e74705SXin Li no 98*67e74705SXin Li } others; 99*67e74705SXin Li 100*67e74705SXin Li enum OUTSIDE meetoo; 101*67e74705SXin Li 102*67e74705SXin Li enum { 103*67e74705SXin Li one, 104*67e74705SXin Li two 105*67e74705SXin Li } eu; 106*67e74705SXin Li} 107*67e74705SXin Li@end 108*67e74705SXin Li 109*67e74705SXin Li@interface I { 110*67e74705SXin Li enum INSIDE I1; 111*67e74705SXin Li enum OUTSIDE I2; 112*67e74705SXin Li enum ALSO_INSIDE { 113*67e74705SXin Li maybe 114*67e74705SXin Li } I3; 115*67e74705SXin Li 116*67e74705SXin Li enum ALSO_INSIDE I4; 117*67e74705SXin Li 118*67e74705SXin Li enum { 119*67e74705SXin Li three, 120*67e74705SXin Li four 121*67e74705SXin Li } I5; 122*67e74705SXin Li} 123*67e74705SXin Li@end 124*67e74705SXin Li 125