xref: /aosp_15_r20/external/clang/test/Rewriter/rewrite-modern-ivars-1.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
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