PR gdb/28480: Improve ambiguous member detection
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / ambiguous.cc
1 class empty { };
2
3 class A1 {
4 public:
5 int x;
6 int y;
7 };
8
9 class A2 {
10 public:
11 int x;
12 int y;
13 };
14
15 class A3 {
16 public:
17 int x;
18 int y;
19 };
20
21 #if !defined (__GNUC__) || __GNUC__ > 7
22 # define NO_UNIQUE_ADDRESS [[no_unique_address]]
23 #else
24 # define NO_UNIQUE_ADDRESS
25 #endif
26
27 class A4 {
28 public:
29 NO_UNIQUE_ADDRESS empty x;
30 };
31
32 class X : public A1, public A2 {
33 public:
34 int z;
35 };
36
37 class L : public A1 {
38 public:
39 int z;
40 };
41
42 class LV : public virtual A1 {
43 public:
44 int z;
45 };
46
47 class M : public A2 {
48 public:
49 int w;
50 };
51
52 class N : public L, public M {
53 public:
54 int r;
55 };
56
57 class K : public A1 {
58 public:
59 int i;
60 };
61
62 class KV : public virtual A1 {
63 public:
64 int i;
65 };
66
67 class J : public K, public L {
68 public:
69 int j;
70 };
71
72 class JV : public KV, public LV {
73 public:
74 int jv;
75 };
76
77 class JVA1 : public KV, public LV, public A1 {
78 public:
79 int jva1;
80 };
81
82 class JVA2 : public KV, public LV, public A2 {
83 public:
84 int jva2;
85 };
86
87 class JVA1V : public KV, public LV, public virtual A1 {
88 public:
89 int jva1v;
90 };
91
92 class JE : public A1, public A4 {
93 public:
94 };
95
96 int main()
97 {
98 A1 a1;
99 A2 a2;
100 A3 a3;
101 X x;
102 L l;
103 M m;
104 N n;
105 K k;
106 J j;
107 JV jv;
108 JVA1 jva1;
109 JVA2 jva2;
110 JVA1V jva1v;
111 JE je;
112
113 int i;
114
115 i += k.i + m.w + a1.x + a2.x + a3.x + x.z + l.z + n.r + j.j;
116
117 /* Initialize all the fields. Keep the order the same as in the
118 .exp file. */
119
120 a1.x = 1;
121 a1.y = 2;
122
123 a2.x = 1;
124 a2.y = 2;
125
126 a3.x = 1;
127 a3.y = 2;
128
129 x.A1::x = 1;
130 x.A1::y = 2;
131 x.A2::x = 3;
132 x.A2::y = 4;
133 x.z = 5;
134
135 l.x = 1;
136 l.y = 2;
137 l.z = 3;
138
139 m.x = 1;
140 m.y = 2;
141 m.w = 3;
142
143 n.A1::x = 1;
144 n.A1::y = 2;
145 n.A2::x = 3;
146 n.A2::y = 4;
147 n.w = 5;
148 n.r = 6;
149 n.z = 7;
150
151 k.x = 1;
152 k.y = 2;
153 k.i = 3;
154
155 j.K::x = 1;
156 j.K::y = 2;
157 j.L::x = 3;
158 j.L::y = 4;
159 j.i = 5;
160 j.z = 6;
161 j.j = 7;
162
163 jv.x = 1;
164 jv.y = 2;
165 jv.i = 3;
166 jv.z = 4;
167 jv.jv = 5;
168
169 jva1.KV::x = 1;
170 jva1.KV::y = 2;
171 jva1.LV::x = 3;
172 jva1.LV::y = 4;
173 jva1.z = 5;
174 jva1.i = 6;
175 jva1.jva1 = 7;
176
177 jva2.KV::x = 1;
178 jva2.KV::y = 2;
179 jva2.LV::x = 3;
180 jva2.LV::y = 4;
181 jva2.A2::x = 5;
182 jva2.A2::y = 6;
183 jva2.z = 7;
184 jva2.i = 8;
185 jva2.jva2 = 9;
186
187 jva1v.x = 1;
188 jva1v.y = 2;
189 jva1v.z = 3;
190 jva1v.i = 4;
191 jva1v.jva1v = 5;
192
193 je.A1::x = 1;
194
195 return 0; /* set breakpoint here */
196 }
This page took 0.038631 seconds and 4 git commands to generate.