...
1In this file we test cases where references are shadowed:
2- x: x: x
3- a newly created dynamic field which ends up shadowing an existing field.
4
5-- in.cue --
6shadowRef: t1: {
7 x: "x": x | null
8}
9
10shadowRef: t2: {
11 x: "x": "x": x | null
12}
13
14shadowRef: t3: {
15 x: "x": x: "x": x | null
16}
17
18shadowRef: t4: {
19 X=x: {
20 x: X | null
21 y: x
22 }
23}
24
25shadowRef: t5: {
26 X=x: x: X | null
27}
28
29shadowRef: e1: {
30 x: "x": x // structural error, but should still print ok.
31 x: {}
32}
33
34shadowAlias: t1: {
35 y: "outer"
36 a: {
37 key: "y"
38 X=(key): "inner"
39
40 refs: {
41 Z="y": 1
42 outer: y
43 mid: X
44 inner: Z
45
46 }
47 }
48}
49
50shadowAlias: t2: {
51 a: {
52 key: "y"
53 X=(key): "inner"
54
55 refs: {
56 Z="y": 1
57 outer: y
58 mid: X
59 inner: Z
60
61 }
62 }
63 y: "outer"
64}
65
66shadowField: t1: {
67 z: {
68 A=b: 0
69 d: {
70 b: 1
71 c: A
72 }
73 }
74}
75
76shadowField: t2: {
77 z: {
78 A=b: 0
79 d: {
80 b: 1
81 c: A
82 }
83 }
84 z: d: { A: 1 }
85}
86
87shadowField: t4: {
88 merge: {
89 z: {
90 A=b: 0
91 d: {
92 b: 1
93 c: A
94 }
95 }
96 }
97
98 merge: {
99 z: {
100 A=b: 0
101 d: {
102 b: 1
103 c: A
104 }
105 }
106 z: d: { A: 1 }
107 }
108}
109
110shadowField: t5: {
111 merge: {
112 A=b: 0
113 d: {
114 b: 1
115 c: A
116 }
117 }
118 merge: {
119 b: 0
120 d: b: 1
121 }
122}
123
124// TODO: could be simplified to:
125// A=b: 0
126// c: A
127// or even
128// b: 0
129// c: b
130shadowField: t6: {
131 x: {
132 A=b: 0
133 c: A
134 }
135 x: b: 0
136}
137
138shadowField: issue2378: {
139 a: {
140 A=b: 0
141 d: {
142 b: 1
143 c: A & a.z
144 }
145 }
146}
147
148-- out/definition --
149shadowRef: {
150 t1: {
151 x_1=x: {
152 x: x_1 | null
153 }
154 }
155 t2: {
156 x_5=x: {
157 x: {
158 x: x_5 | null
159 }
160 }
161 }
162 t3: {
163 x: {
164 x: {
165 x_A=x: {
166 x: x_A | null
167 }
168 }
169 }
170 }
171 t4: {
172 X=x: {
173 x: X | null
174 y: x
175 }
176 }
177 t5: {
178 X=x: {
179 x: X | null
180 }
181 }
182 e1: {
183 x_8=x: {
184 x: x_8
185 }
186 }
187}
188shadowAlias: {
189 t1: {
190 y: "outer"
191 a: {
192 key: "y"
193 X=(key): "inner"
194 refs: {
195 Z="y": 1
196 outer: y
197 mid: X
198 inner: Z
199 }
200 }
201 }
202 t2: {
203 a: {
204 key: "y"
205 X_1=(key): "inner"
206 refs: {
207 Z="y": 1
208 outer: y
209 mid: X_1
210 inner: Z
211 }
212 }
213 y: "outer"
214 }
215}
216shadowField: {
217 t1: {
218 z: {
219 A=b: 0
220 d: {
221 b: 1
222 c: A
223 }
224 }
225 }
226 t2: {
227 z: {
228 {
229 A=b: 0
230 d: {
231 b: 1
232 c: A
233 }
234 }
235 d: {
236 A: 1
237 }
238 }
239 }
240 t4: {
241 merge: {
242 z: {
243 {
244 A=b: 0
245 d: {
246 b: 1
247 c: A
248 }
249 }
250 {
251 A=b: 0
252 d: {
253 b: 1
254 c: A
255 }
256 }
257 d: {
258 A: 1
259 }
260 }
261 }
262 }
263 t5: {
264 merge: {
265 {
266 A=b: 0
267 d: {
268 b: 1
269 c: A
270 }
271 }
272 b: 0
273 d: {
274 b: 1
275 }
276 }
277 }
278 t6: {
279 x: {
280 {
281 A=b: 0
282 c: A
283 }
284 b: 0
285 }
286 }
287 issue2378: {
288 a: {
289 A=b: 0
290 d: {
291 b: 1
292 c: A & a.z
293 }
294 }
295 }
296}
297-- out/doc --
298[]
299[shadowRef]
300[shadowRef t1]
301[shadowRef t1 x]
302[shadowRef t1 x x]
303[shadowRef t2]
304[shadowRef t2 x]
305[shadowRef t2 x x]
306[shadowRef t2 x x x]
307[shadowRef t3]
308[shadowRef t3 x]
309[shadowRef t3 x x]
310[shadowRef t3 x x x]
311[shadowRef t3 x x x x]
312[shadowRef t4]
313[shadowRef t4 x]
314[shadowRef t4 x x]
315[shadowRef t4 x y]
316[shadowRef t5]
317[shadowRef t5 x]
318[shadowRef t5 x x]
319[shadowRef e1]
320[shadowRef e1 x]
321[shadowRef e1 x x]
322[shadowAlias]
323[shadowAlias t1]
324[shadowAlias t1 y]
325[shadowAlias t1 a]
326[shadowAlias t1 a key]
327[shadowAlias t1 a refs]
328[shadowAlias t1 a refs y]
329[shadowAlias t1 a refs outer]
330[shadowAlias t1 a refs mid]
331[shadowAlias t1 a refs inner]
332[shadowAlias t1 a y]
333[shadowAlias t2]
334[shadowAlias t2 a]
335[shadowAlias t2 a key]
336[shadowAlias t2 a refs]
337[shadowAlias t2 a refs y]
338[shadowAlias t2 a refs outer]
339[shadowAlias t2 a refs mid]
340[shadowAlias t2 a refs inner]
341[shadowAlias t2 a y]
342[shadowAlias t2 y]
343[shadowField]
344[shadowField t1]
345[shadowField t1 z]
346[shadowField t1 z b]
347[shadowField t1 z d]
348[shadowField t1 z d b]
349[shadowField t1 z d c]
350[shadowField t2]
351[shadowField t2 z]
352[shadowField t2 z b]
353[shadowField t2 z d]
354[shadowField t2 z d b]
355[shadowField t2 z d c]
356[shadowField t2 z d A]
357[shadowField t4]
358[shadowField t4 merge]
359[shadowField t4 merge z]
360[shadowField t4 merge z b]
361[shadowField t4 merge z d]
362[shadowField t4 merge z d b]
363[shadowField t4 merge z d c]
364[shadowField t4 merge z d A]
365[shadowField t5]
366[shadowField t5 merge]
367[shadowField t5 merge b]
368[shadowField t5 merge d]
369[shadowField t5 merge d b]
370[shadowField t5 merge d c]
371[shadowField t6]
372- TODO: could be simplified to:
373 A=b: 0
374 c: A
375or even
376 b: 0
377 c: b
378
379[shadowField t6 x]
380[shadowField t6 x b]
381[shadowField t6 x c]
382[shadowField issue2378]
383[shadowField issue2378 a]
384[shadowField issue2378 a b]
385[shadowField issue2378 a d]
386[shadowField issue2378 a d b]
387[shadowField issue2378 a d c]
388-- out/value --
389== Simplified
390_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
391== Raw
392_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
393== Final
394_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
395== All
396{
397 shadowRef: {
398 t1: {
399 x: {
400 x: null
401 }
402 }
403 t2: {
404 x: {
405 x: {
406 x: null
407 }
408 }
409 }
410 t3: {
411 x: {
412 x: {
413 x: {
414 x: null
415 }
416 }
417 }
418 }
419 t4: {
420 x: {
421 x: null
422 y: null
423 }
424 }
425 t5: {
426 x: {
427 x: null
428 }
429 }
430 e1: {
431 x: {
432 x: _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
433 }
434 }
435 }
436 shadowAlias: {
437 t1: {
438 y: "outer"
439 a: {
440 key: "y"
441 y: "inner"
442 refs: {
443 y: 1
444 outer: "outer"
445 mid: "inner"
446 inner: 1
447 }
448 }
449 }
450 t2: {
451 a: {
452 key: "y"
453 y: "inner"
454 refs: {
455 y: 1
456 outer: "outer"
457 mid: "inner"
458 inner: 1
459 }
460 }
461 y: "outer"
462 }
463 }
464 shadowField: {
465 t1: {
466 z: {
467 b: 0
468 d: {
469 b: 1
470 c: 0
471 }
472 }
473 }
474 t2: {
475 z: {
476 b: 0
477 d: {
478 b: 1
479 A: 1
480 c: 0
481 }
482 }
483 }
484 t4: {
485 merge: {
486 z: {
487 b: 0
488 d: {
489 b: 1
490 A: 1
491 c: 0
492 }
493 }
494 }
495 }
496 t5: {
497 merge: {
498 b: 0
499 d: {
500 b: 1
501 c: 0
502 }
503 }
504 }
505
506 // TODO: could be simplified to:
507 // A=b: 0
508 // c: A
509 // or even
510 // b: 0
511 // c: b
512 t6: {
513 x: {
514 b: 0
515 c: 0
516 }
517 }
518 issue2378: {
519 a: {
520 b: 0
521 d: {
522 b: 1
523 c: A & a.z
524 }
525 }
526 }
527 }
528}
529== Eval
530_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
View as plain text