xref: /aosp_15_r20/external/clang/test/Rewriter/rewrite-modern-ivar-access.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
2*67e74705SXin Li// RUN: %clang_cc1 -Werror -fsyntax-only -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
3*67e74705SXin Li
4*67e74705SXin Listruct OUTSIDE {
5*67e74705SXin Li  int i_OUTSIDE;
6*67e74705SXin Li  double d_OUTSIDE;
7*67e74705SXin Li};
8*67e74705SXin Li
9*67e74705SXin Li
10*67e74705SXin Li@interface I1 {
11*67e74705SXin Li@protected
12*67e74705SXin Li  struct OUTSIDE ivar_I1;
13*67e74705SXin Li
14*67e74705SXin Li  struct INNER_I1 {
15*67e74705SXin Li    int i_INNER_I1;
16*67e74705SXin Li    double d_INNER_I1;
17*67e74705SXin Li  };
18*67e74705SXin Li
19*67e74705SXin Li  struct INNER_I1 ivar_I2;
20*67e74705SXin Li
21*67e74705SXin Li  struct OUTSIDE ivar_I3;
22*67e74705SXin Li
23*67e74705SXin Li  struct {
24*67e74705SXin Li    int i_noname;
25*67e74705SXin Li    double d_noname;
26*67e74705SXin Li  } NONAME_I4;
27*67e74705SXin Li
28*67e74705SXin Li  struct {
29*67e74705SXin Li    int i_noname;
30*67e74705SXin Li    double d_noname;
31*67e74705SXin Li  } NONAME_I5;
32*67e74705SXin Li}
33*67e74705SXin Li@end
34*67e74705SXin Li
35*67e74705SXin Li@implementation I1
36*67e74705SXin Li- (void) I1_Meth {
37*67e74705SXin Li  ivar_I1.i_OUTSIDE = 0;
38*67e74705SXin Li
39*67e74705SXin Li  ivar_I2.i_INNER_I1 = 1;
40*67e74705SXin Li
41*67e74705SXin Li  ivar_I3.i_OUTSIDE = 2;
42*67e74705SXin Li
43*67e74705SXin Li  NONAME_I4.i_noname = 3;
44*67e74705SXin Li
45*67e74705SXin Li  NONAME_I5.i_noname = 4;
46*67e74705SXin Li}
47*67e74705SXin Li@end
48*67e74705SXin Li
49*67e74705SXin Li@interface INTF2 {
50*67e74705SXin Li@protected
51*67e74705SXin Li  struct OUTSIDE ivar_INTF2;
52*67e74705SXin Li
53*67e74705SXin Li  struct {
54*67e74705SXin Li    int i_noname;
55*67e74705SXin Li    double d_noname;
56*67e74705SXin Li  } NONAME_INTF4;
57*67e74705SXin Li
58*67e74705SXin Li
59*67e74705SXin Li  struct OUTSIDE ivar_INTF3;
60*67e74705SXin Li
61*67e74705SXin Li  struct INNER_I1 ivar_INTF4;
62*67e74705SXin Li
63*67e74705SXin Li  struct {
64*67e74705SXin Li    int i_noname;
65*67e74705SXin Li    double d_noname;
66*67e74705SXin Li  } NONAME_INTF5;
67*67e74705SXin Li
68*67e74705SXin Li  struct INNER_INTF2 {
69*67e74705SXin Li    int i_INNER_INTF2;
70*67e74705SXin Li    double d_INNER_INTF2;
71*67e74705SXin Li  };
72*67e74705SXin Li
73*67e74705SXin Li  struct INNER_INTF2 ivar_INTF6, ivar_INTF7;
74*67e74705SXin Li
75*67e74705SXin Li  struct INNER_INTF3 {
76*67e74705SXin Li    int i;
77*67e74705SXin Li  } X1,X2,X3;
78*67e74705SXin Li
79*67e74705SXin Li}
80*67e74705SXin Li@end
81*67e74705SXin Li
82*67e74705SXin Li@implementation INTF2
83*67e74705SXin Li- (void) I2_Meth {
84*67e74705SXin Li  ivar_INTF2.i_OUTSIDE = 0;
85*67e74705SXin Li
86*67e74705SXin Li  ivar_INTF4.i_INNER_I1 = 1;
87*67e74705SXin Li
88*67e74705SXin Li  ivar_INTF3.i_OUTSIDE = 2;
89*67e74705SXin Li
90*67e74705SXin Li  NONAME_INTF4.i_noname = 3;
91*67e74705SXin Li
92*67e74705SXin Li  NONAME_INTF5.i_noname = 4;
93*67e74705SXin Li  ivar_INTF6.i_INNER_INTF2 = 5;
94*67e74705SXin Li  ivar_INTF7.i_INNER_INTF2 = 5;
95*67e74705SXin Li  X1.i = X2.i = X3.i = 1;
96*67e74705SXin Li}
97*67e74705SXin Li@end
98*67e74705SXin Li
99