Source file
test/ken/embed.go
1
2
3
4
5
6
7
8
9 package main
10
11
12 type I interface {
13 test1() int
14 test2() int
15 test3() int
16 test4() int
17 test5() int
18 test6() int
19 test7() int
20 }
21
22
25
26 type SubpSubp struct {
27 a7 int
28 a int
29 }
30
31 func (p *SubpSubp) test7() int {
32 if p.a != p.a7 {
33 println("SubpSubp", p, p.a7)
34 panic("fail")
35 }
36 return p.a
37 }
38 func (p *SubpSubp) testx() { println("SubpSubp", p, p.a7) }
39
40
43
44 type SubpSub struct {
45 a6 int
46 SubpSubp
47 a int
48 }
49
50 func (p *SubpSub) test6() int {
51 if p.a != p.a6 {
52 println("SubpSub", p, p.a6)
53 panic("fail")
54 }
55 return p.a
56 }
57 func (p *SubpSub) testx() { println("SubpSub", p, p.a6) }
58
59
62
63 type SubSubp struct {
64 a5 int
65 a int
66 }
67
68 func (p *SubSubp) test5() int {
69 if p.a != p.a5 {
70 println("SubpSub", p, p.a5)
71 panic("fail")
72 }
73 return p.a
74 }
75
76
79
80 type SubSub struct {
81 a4 int
82 a int
83 }
84
85 func (p *SubSub) test4() int {
86 if p.a != p.a4 {
87 println("SubpSub", p, p.a4)
88 panic("fail")
89 }
90 return p.a
91 }
92
93
96
97 type Subp struct {
98 a3 int
99 *SubpSubp
100 SubpSub
101 a int
102 }
103
104 func (p *Subp) test3() int {
105 if p.a != p.a3 {
106 println("SubpSub", p, p.a3)
107 panic("fail")
108 }
109 return p.a
110 }
111
112
115
116 type Sub struct {
117 a2 int
118 *SubSubp
119 SubSub
120 a int
121 }
122
123 func (p *Sub) test2() int {
124 if p.a != p.a2 {
125 println("SubpSub", p, p.a2)
126 panic("fail")
127 }
128 return p.a
129 }
130
131
134
135 type S struct {
136 a1 int
137 Sub
138 *Subp
139 a int
140 }
141
142 func (p *S) test1() int {
143 if p.a != p.a1 {
144 println("SubpSub", p, p.a1)
145 panic("fail")
146 }
147 return p.a
148 }
149
150
153
154 func main() {
155 var i I
156 var s *S
157
158
159 s = new(S)
160 s.Subp = new(Subp)
161 s.Sub.SubSubp = new(SubSubp)
162 s.Subp.SubpSubp = new(SubpSubp)
163
164
165 s.a = 1
166 s.Sub.a = 2
167 s.Subp.a = 3
168 s.Sub.SubSub.a = 4
169 s.Sub.SubSubp.a = 5
170 s.Subp.SubpSub.a = 6
171 s.Subp.SubpSubp.a = 7
172
173
174 s.a1 = 1
175 s.a2 = 2
176 s.a3 = 3
177 s.a4 = 4
178 s.a5 = 5
179 s.a6 = 6
180 s.a7 = 7
181
182
183 if s.test1() != 1 {
184 println("t1", 1)
185 panic("fail")
186 }
187 if (&s.Sub).test2() != 2 {
188 println("t1", 2)
189 panic("fail")
190 }
191 if s.Subp.test3() != 3 {
192 println("t1", 3)
193 panic("fail")
194 }
195 if (&s.Sub.SubSub).test4() != 4 {
196 println("t1", 4)
197 panic("fail")
198 }
199 if s.Sub.SubSubp.test5() != 5 {
200 println("t1", 5)
201 panic("fail")
202 }
203 if (&s.Subp.SubpSub).test6() != 6 {
204 println("t1", 6)
205 panic("fail")
206 }
207 if s.Subp.SubpSubp.test7() != 7 {
208 println("t1", 7)
209 panic("fail")
210 }
211
212
213 if s.Sub.test2() != 2 {
214 println("t2", 2)
215 panic("fail")
216 }
217 if s.Sub.SubSub.test4() != 4 {
218 println("t2", 4)
219 panic("fail")
220 }
221 if s.Subp.SubpSub.test6() != 6 {
222 println("t2", 6)
223 panic("fail")
224 }
225
226
227 if s.test1() != s.a1 {
228 println("t3", 1)
229 panic("fail")
230 }
231 if s.test2() != s.a2 {
232 println("t3", 2)
233 panic("fail")
234 }
235 if s.test3() != s.a3 {
236 println("t3", 3)
237 panic("fail")
238 }
239 if s.test4() != s.a4 {
240 println("t3", 4)
241 panic("fail")
242 }
243 if s.test5() != s.a5 {
244 println("t3", 5)
245 panic("fail")
246 }
247 if s.test6() != s.a6 {
248 println("t3", 6)
249 panic("fail")
250 }
251 if s.test7() != s.a7 {
252 println("t3", 7)
253 panic("fail")
254 }
255
256
257 i = s
258 s = i.(*S)
259
260
261 if s.test1() != s.a1 {
262 println("t4", 1)
263 panic("fail")
264 }
265 if s.test2() != s.a2 {
266 println("t4", 2)
267 panic("fail")
268 }
269 if s.test3() != s.a3 {
270 println("t4", 3)
271 panic("fail")
272 }
273 if s.test4() != s.a4 {
274 println("t4", 4)
275 panic("fail")
276 }
277 if s.test5() != s.a5 {
278 println("t4", 5)
279 panic("fail")
280 }
281 if s.test6() != s.a6 {
282 println("t4", 6)
283 panic("fail")
284 }
285 if s.test7() != s.a7 {
286 println("t4", 7)
287 panic("fail")
288 }
289
290
291 if i.test1() != s.test1() {
292 println("t5", 1)
293 panic("fail")
294 }
295 if i.test2() != s.test2() {
296 println("t5", 2)
297 panic("fail")
298 }
299 if i.test3() != s.test3() {
300 println("t5", 3)
301 panic("fail")
302 }
303 if i.test4() != s.test4() {
304 println("t5", 4)
305 panic("fail")
306 }
307 if i.test5() != s.test5() {
308 println("t5", 5)
309 panic("fail")
310 }
311 if i.test6() != s.test6() {
312 println("t5", 6)
313 panic("fail")
314 }
315 if i.test7() != s.test7() {
316 println("t5", 7)
317 panic("fail")
318 }
319 }
320
View as plain text