cuelang.org/go@v0.10.1/internal/core/export/testdata/main/shadow.txtar (about) 1 In 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 -- 6 shadowRef: t1: { 7 x: "x": x | null 8 } 9 10 shadowRef: t2: { 11 x: "x": "x": x | null 12 } 13 14 shadowRef: t3: { 15 x: "x": x: "x": x | null 16 } 17 18 shadowRef: t4: { 19 X=x: { 20 x: X | null 21 y: x 22 } 23 } 24 25 shadowRef: t5: { 26 X=x: x: X | null 27 } 28 29 shadowRef: e1: { 30 x: "x": x // structural error, but should still print ok. 31 x: {} 32 } 33 34 shadowAlias: 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 50 shadowAlias: 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 66 shadowField: t1: { 67 z: { 68 A=b: 0 69 d: { 70 b: 1 71 c: A 72 } 73 } 74 } 75 76 shadowField: t2: { 77 z: { 78 A=b: 0 79 d: { 80 b: 1 81 c: A 82 } 83 } 84 z: d: { A: 1 } 85 } 86 87 shadowField: 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 110 shadowField: 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 130 shadowField: t6: { 131 x: { 132 A=b: 0 133 c: A 134 } 135 x: b: 0 136 } 137 138 shadowField: issue2378: { 139 a: { 140 A=b: 0 141 d: { 142 b: 1 143 c: A & a.z 144 } 145 } 146 } 147 148 -- out/definition -- 149 shadowRef: { 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 } 188 shadowAlias: { 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 } 216 shadowField: { 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 375 or 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-v3 -- 389 == Simplified 390 _|_ // shadowRef.e1.x.x: structural cycle 391 == Raw 392 _|_ // shadowRef.e1.x.x: structural cycle 393 == Final 394 _|_ // shadowRef.e1.x.x: structural cycle 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 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 531 -- diff/-out/value-v3<==>+out/value -- 532 diff old new 533 --- old 534 +++ new 535 @@ -1,9 +1,9 @@ 536 == Simplified 537 -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 538 +_|_ // shadowRef.e1.x.x: structural cycle 539 == Raw 540 -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 541 +_|_ // shadowRef.e1.x.x: structural cycle 542 == Final 543 -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 544 +_|_ // shadowRef.e1.x.x: structural cycle 545 == All 546 { 547 shadowRef: { 548 @@ -41,7 +41,7 @@ 549 } 550 e1: { 551 x: { 552 - x: _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 553 + x: _|_ // shadowRef.e1.x.x: structural cycle 554 } 555 } 556 } 557 @@ -139,4 +139,4 @@ 558 } 559 } 560 == Eval 561 -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 562 +_|_ // shadowRef.e1.x.x: structural cycle 563 -- out/value -- 564 == Simplified 565 _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 566 == Raw 567 _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 568 == Final 569 _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 570 == All 571 { 572 shadowRef: { 573 t1: { 574 x: { 575 x: null 576 } 577 } 578 t2: { 579 x: { 580 x: { 581 x: null 582 } 583 } 584 } 585 t3: { 586 x: { 587 x: { 588 x: { 589 x: null 590 } 591 } 592 } 593 } 594 t4: { 595 x: { 596 x: null 597 y: null 598 } 599 } 600 t5: { 601 x: { 602 x: null 603 } 604 } 605 e1: { 606 x: { 607 x: _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors) 608 } 609 } 610 } 611 shadowAlias: { 612 t1: { 613 y: "outer" 614 a: { 615 key: "y" 616 y: "inner" 617 refs: { 618 y: 1 619 outer: "outer" 620 mid: "inner" 621 inner: 1 622 } 623 } 624 } 625 t2: { 626 a: { 627 key: "y" 628 y: "inner" 629 refs: { 630 y: 1 631 outer: "outer" 632 mid: "inner" 633 inner: 1 634 } 635 } 636 y: "outer" 637 } 638 } 639 shadowField: { 640 t1: { 641 z: { 642 b: 0 643 d: { 644 b: 1 645 c: 0 646 } 647 } 648 } 649 t2: { 650 z: { 651 b: 0 652 d: { 653 b: 1 654 A: 1 655 c: 0 656 } 657 } 658 } 659 t4: { 660 merge: { 661 z: { 662 b: 0 663 d: { 664 b: 1 665 A: 1 666 c: 0 667 } 668 } 669 } 670 } 671 t5: { 672 merge: { 673 b: 0 674 d: { 675 b: 1 676 c: 0 677 } 678 } 679 } 680 681 // TODO: could be simplified to: 682 // A=b: 0 683 // c: A 684 // or even 685 // b: 0 686 // c: b 687 t6: { 688 x: { 689 b: 0 690 c: 0 691 } 692 } 693 issue2378: { 694 a: { 695 b: 0 696 d: { 697 b: 1 698 c: A & a.z 699 } 700 } 701 } 702 } 703 } 704 == Eval 705 _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)