cuelang.org/go@v0.13.0/cue/testdata/benchmarks/cycleshare.txtar (about) 1 -- in.cue -- 2 // Test that cyclic references do not break structure sharing. This was the 3 // underlying problem of Issue #3587. Note that this is not a problem related 4 // to disjunctions. 5 6 // These definitions represent a large tree of disjunctions. 7 #D1: {a: #D2} | {b: #D2} | {c: #D2} 8 #D2: {a: #D3} | {b: #D3} | {c: #D3} 9 #D3: { 10 one: {a: int} | {b: int} | {c: int} 11 two: {a: string} | {b: string} | {c: string} 12 three: {a: bool} | {b: bool} | {c: bool} 13 } 14 15 root: y: #D1 | [#D1] | {x: #D1} // Expensive path 16 root: x: empty: {} 17 18 root: "0": data: root_0.x.empty 19 root: "1": data: root_1.x.empty 20 root: "2": data: root_2.x.empty 21 root: "3": data: root_3.x.empty 22 23 // We want root to be shared in all of these cases. 24 let root_0 = root 25 let root_1 = root 26 root_2: root 27 root_3: root 28 -- out/evalalpha/stats -- 29 Leaks: 64 30 Freed: 0 31 Reused: 0 32 Allocs: 64 33 Retain: 0 34 35 Unifications: 43 36 Conjuncts: 70 37 Disjuncts: 21 38 39 CloseIDElems: 6 40 NumCloseIDs: 1 41 -- diff/-out/evalalpha/stats<==>+out/eval/stats -- 42 diff old new 43 --- old 44 +++ new 45 @@ -1,9 +1,12 @@ 46 -Leaks: 8 47 -Freed: 965 48 -Reused: 951 49 -Allocs: 22 50 -Retain: 17 51 - 52 -Unifications: 559 53 -Conjuncts: 1046 54 -Disjuncts: 976 55 +Leaks: 64 56 +Freed: 0 57 +Reused: 0 58 +Allocs: 64 59 +Retain: 0 60 + 61 +Unifications: 43 62 +Conjuncts: 70 63 +Disjuncts: 21 64 + 65 +CloseIDElems: 6 66 +NumCloseIDs: 1 67 -- out/eval/stats -- 68 Leaks: 8 69 Freed: 965 70 Reused: 951 71 Allocs: 22 72 Retain: 17 73 74 Unifications: 559 75 Conjuncts: 1046 76 Disjuncts: 976 77 -- out/evalalpha -- 78 (struct){ 79 #D1: (#struct){ |((#struct){ 80 a: (#struct){ |((#struct){ 81 a: ~(#D3) 82 }, (#struct){ 83 b: ~(#D3) 84 }, (#struct){ 85 c: ~(#D3) 86 }) } 87 }, (#struct){ 88 b: (#struct){ |((#struct){ 89 a: ~(#D3) 90 }, (#struct){ 91 b: ~(#D3) 92 }, (#struct){ 93 c: ~(#D3) 94 }) } 95 }, (#struct){ 96 c: (#struct){ |((#struct){ 97 a: ~(#D3) 98 }, (#struct){ 99 b: ~(#D3) 100 }, (#struct){ 101 c: ~(#D3) 102 }) } 103 }) } 104 #D2: (#struct){ |((#struct){ 105 a: ~(#D3) 106 }, (#struct){ 107 b: ~(#D3) 108 }, (#struct){ 109 c: ~(#D3) 110 }) } 111 #D3: (#struct){ 112 one: (#struct){ |((#struct){ 113 a: (int){ int } 114 }, (#struct){ 115 b: (int){ int } 116 }, (#struct){ 117 c: (int){ int } 118 }) } 119 two: (#struct){ |((#struct){ 120 a: (string){ string } 121 }, (#struct){ 122 b: (string){ string } 123 }, (#struct){ 124 c: (string){ string } 125 }) } 126 three: (#struct){ |((#struct){ 127 a: (bool){ bool } 128 }, (#struct){ 129 b: (bool){ bool } 130 }, (#struct){ 131 c: (bool){ bool } 132 }) } 133 } 134 root: (struct){ 135 y: ((list|struct)){ |((#struct){ 136 a: (#struct){ |((#struct){ 137 a: ~(#D3) 138 }, (#struct){ 139 b: ~(#D3) 140 }, (#struct){ 141 c: ~(#D3) 142 }) } 143 }, (#struct){ 144 b: (#struct){ |((#struct){ 145 a: ~(#D3) 146 }, (#struct){ 147 b: ~(#D3) 148 }, (#struct){ 149 c: ~(#D3) 150 }) } 151 }, (#struct){ 152 c: (#struct){ |((#struct){ 153 a: ~(#D3) 154 }, (#struct){ 155 b: ~(#D3) 156 }, (#struct){ 157 c: ~(#D3) 158 }) } 159 }, (#list){ 160 0: (#struct){ |((#struct){ 161 a: (#struct){ |((#struct){ 162 a: ~(#D3) 163 }, (#struct){ 164 b: ~(#D3) 165 }, (#struct){ 166 c: ~(#D3) 167 }) } 168 }, (#struct){ 169 b: (#struct){ |((#struct){ 170 a: ~(#D3) 171 }, (#struct){ 172 b: ~(#D3) 173 }, (#struct){ 174 c: ~(#D3) 175 }) } 176 }, (#struct){ 177 c: (#struct){ |((#struct){ 178 a: ~(#D3) 179 }, (#struct){ 180 b: ~(#D3) 181 }, (#struct){ 182 c: ~(#D3) 183 }) } 184 }) } 185 }, (struct){ 186 x: (#struct){ |((#struct){ 187 a: (#struct){ |((#struct){ 188 a: ~(#D3) 189 }, (#struct){ 190 b: ~(#D3) 191 }, (#struct){ 192 c: ~(#D3) 193 }) } 194 }, (#struct){ 195 b: (#struct){ |((#struct){ 196 a: ~(#D3) 197 }, (#struct){ 198 b: ~(#D3) 199 }, (#struct){ 200 c: ~(#D3) 201 }) } 202 }, (#struct){ 203 c: (#struct){ |((#struct){ 204 a: ~(#D3) 205 }, (#struct){ 206 b: ~(#D3) 207 }, (#struct){ 208 c: ~(#D3) 209 }) } 210 }) } 211 }) } 212 x: (struct){ 213 empty: (struct){ 214 } 215 } 216 "0": (struct){ 217 data: (struct){ 218 } 219 } 220 "1": (struct){ 221 data: (struct){ 222 } 223 } 224 "2": (struct){ 225 data: (struct){ 226 } 227 } 228 "3": (struct){ 229 data: (struct){ 230 } 231 } 232 } 233 let root_0#1 = ~(root) 234 let root_1#2 = ~(root) 235 root_2: ~(root) 236 root_3: ~(root) 237 } 238 -- diff/-out/evalalpha<==>+out/eval -- 239 diff old new 240 --- old 241 +++ new 242 @@ -1,305 +1,35 @@ 243 -Errors: 244 -root_2: structural cycle: 245 - ./in.cue:19:18 246 - 247 -Result: 248 -(_|_){ 249 - // [structural cycle] 250 +(struct){ 251 #D1: (#struct){ |((#struct){ 252 a: (#struct){ |((#struct){ 253 - a: (#struct){ 254 - one: (#struct){ |((#struct){ 255 - a: (int){ int } 256 - }, (#struct){ 257 - b: (int){ int } 258 - }, (#struct){ 259 - c: (int){ int } 260 - }) } 261 - two: (#struct){ |((#struct){ 262 - a: (string){ string } 263 - }, (#struct){ 264 - b: (string){ string } 265 - }, (#struct){ 266 - c: (string){ string } 267 - }) } 268 - three: (#struct){ |((#struct){ 269 - a: (bool){ bool } 270 - }, (#struct){ 271 - b: (bool){ bool } 272 - }, (#struct){ 273 - c: (bool){ bool } 274 - }) } 275 - } 276 - }, (#struct){ 277 - b: (#struct){ 278 - one: (#struct){ |((#struct){ 279 - a: (int){ int } 280 - }, (#struct){ 281 - b: (int){ int } 282 - }, (#struct){ 283 - c: (int){ int } 284 - }) } 285 - two: (#struct){ |((#struct){ 286 - a: (string){ string } 287 - }, (#struct){ 288 - b: (string){ string } 289 - }, (#struct){ 290 - c: (string){ string } 291 - }) } 292 - three: (#struct){ |((#struct){ 293 - a: (bool){ bool } 294 - }, (#struct){ 295 - b: (bool){ bool } 296 - }, (#struct){ 297 - c: (bool){ bool } 298 - }) } 299 - } 300 - }, (#struct){ 301 - c: (#struct){ 302 - one: (#struct){ |((#struct){ 303 - a: (int){ int } 304 - }, (#struct){ 305 - b: (int){ int } 306 - }, (#struct){ 307 - c: (int){ int } 308 - }) } 309 - two: (#struct){ |((#struct){ 310 - a: (string){ string } 311 - }, (#struct){ 312 - b: (string){ string } 313 - }, (#struct){ 314 - c: (string){ string } 315 - }) } 316 - three: (#struct){ |((#struct){ 317 - a: (bool){ bool } 318 - }, (#struct){ 319 - b: (bool){ bool } 320 - }, (#struct){ 321 - c: (bool){ bool } 322 - }) } 323 - } 324 + a: ~(#D3) 325 + }, (#struct){ 326 + b: ~(#D3) 327 + }, (#struct){ 328 + c: ~(#D3) 329 }) } 330 }, (#struct){ 331 b: (#struct){ |((#struct){ 332 - a: (#struct){ 333 - one: (#struct){ |((#struct){ 334 - a: (int){ int } 335 - }, (#struct){ 336 - b: (int){ int } 337 - }, (#struct){ 338 - c: (int){ int } 339 - }) } 340 - two: (#struct){ |((#struct){ 341 - a: (string){ string } 342 - }, (#struct){ 343 - b: (string){ string } 344 - }, (#struct){ 345 - c: (string){ string } 346 - }) } 347 - three: (#struct){ |((#struct){ 348 - a: (bool){ bool } 349 - }, (#struct){ 350 - b: (bool){ bool } 351 - }, (#struct){ 352 - c: (bool){ bool } 353 - }) } 354 - } 355 - }, (#struct){ 356 - b: (#struct){ 357 - one: (#struct){ |((#struct){ 358 - a: (int){ int } 359 - }, (#struct){ 360 - b: (int){ int } 361 - }, (#struct){ 362 - c: (int){ int } 363 - }) } 364 - two: (#struct){ |((#struct){ 365 - a: (string){ string } 366 - }, (#struct){ 367 - b: (string){ string } 368 - }, (#struct){ 369 - c: (string){ string } 370 - }) } 371 - three: (#struct){ |((#struct){ 372 - a: (bool){ bool } 373 - }, (#struct){ 374 - b: (bool){ bool } 375 - }, (#struct){ 376 - c: (bool){ bool } 377 - }) } 378 - } 379 - }, (#struct){ 380 - c: (#struct){ 381 - one: (#struct){ |((#struct){ 382 - a: (int){ int } 383 - }, (#struct){ 384 - b: (int){ int } 385 - }, (#struct){ 386 - c: (int){ int } 387 - }) } 388 - two: (#struct){ |((#struct){ 389 - a: (string){ string } 390 - }, (#struct){ 391 - b: (string){ string } 392 - }, (#struct){ 393 - c: (string){ string } 394 - }) } 395 - three: (#struct){ |((#struct){ 396 - a: (bool){ bool } 397 - }, (#struct){ 398 - b: (bool){ bool } 399 - }, (#struct){ 400 - c: (bool){ bool } 401 - }) } 402 - } 403 + a: ~(#D3) 404 + }, (#struct){ 405 + b: ~(#D3) 406 + }, (#struct){ 407 + c: ~(#D3) 408 }) } 409 }, (#struct){ 410 c: (#struct){ |((#struct){ 411 - a: (#struct){ 412 - one: (#struct){ |((#struct){ 413 - a: (int){ int } 414 - }, (#struct){ 415 - b: (int){ int } 416 - }, (#struct){ 417 - c: (int){ int } 418 - }) } 419 - two: (#struct){ |((#struct){ 420 - a: (string){ string } 421 - }, (#struct){ 422 - b: (string){ string } 423 - }, (#struct){ 424 - c: (string){ string } 425 - }) } 426 - three: (#struct){ |((#struct){ 427 - a: (bool){ bool } 428 - }, (#struct){ 429 - b: (bool){ bool } 430 - }, (#struct){ 431 - c: (bool){ bool } 432 - }) } 433 - } 434 - }, (#struct){ 435 - b: (#struct){ 436 - one: (#struct){ |((#struct){ 437 - a: (int){ int } 438 - }, (#struct){ 439 - b: (int){ int } 440 - }, (#struct){ 441 - c: (int){ int } 442 - }) } 443 - two: (#struct){ |((#struct){ 444 - a: (string){ string } 445 - }, (#struct){ 446 - b: (string){ string } 447 - }, (#struct){ 448 - c: (string){ string } 449 - }) } 450 - three: (#struct){ |((#struct){ 451 - a: (bool){ bool } 452 - }, (#struct){ 453 - b: (bool){ bool } 454 - }, (#struct){ 455 - c: (bool){ bool } 456 - }) } 457 - } 458 - }, (#struct){ 459 - c: (#struct){ 460 - one: (#struct){ |((#struct){ 461 - a: (int){ int } 462 - }, (#struct){ 463 - b: (int){ int } 464 - }, (#struct){ 465 - c: (int){ int } 466 - }) } 467 - two: (#struct){ |((#struct){ 468 - a: (string){ string } 469 - }, (#struct){ 470 - b: (string){ string } 471 - }, (#struct){ 472 - c: (string){ string } 473 - }) } 474 - three: (#struct){ |((#struct){ 475 - a: (bool){ bool } 476 - }, (#struct){ 477 - b: (bool){ bool } 478 - }, (#struct){ 479 - c: (bool){ bool } 480 - }) } 481 - } 482 + a: ~(#D3) 483 + }, (#struct){ 484 + b: ~(#D3) 485 + }, (#struct){ 486 + c: ~(#D3) 487 }) } 488 }) } 489 #D2: (#struct){ |((#struct){ 490 - a: (#struct){ 491 - one: (#struct){ |((#struct){ 492 - a: (int){ int } 493 - }, (#struct){ 494 - b: (int){ int } 495 - }, (#struct){ 496 - c: (int){ int } 497 - }) } 498 - two: (#struct){ |((#struct){ 499 - a: (string){ string } 500 - }, (#struct){ 501 - b: (string){ string } 502 - }, (#struct){ 503 - c: (string){ string } 504 - }) } 505 - three: (#struct){ |((#struct){ 506 - a: (bool){ bool } 507 - }, (#struct){ 508 - b: (bool){ bool } 509 - }, (#struct){ 510 - c: (bool){ bool } 511 - }) } 512 - } 513 - }, (#struct){ 514 - b: (#struct){ 515 - one: (#struct){ |((#struct){ 516 - a: (int){ int } 517 - }, (#struct){ 518 - b: (int){ int } 519 - }, (#struct){ 520 - c: (int){ int } 521 - }) } 522 - two: (#struct){ |((#struct){ 523 - a: (string){ string } 524 - }, (#struct){ 525 - b: (string){ string } 526 - }, (#struct){ 527 - c: (string){ string } 528 - }) } 529 - three: (#struct){ |((#struct){ 530 - a: (bool){ bool } 531 - }, (#struct){ 532 - b: (bool){ bool } 533 - }, (#struct){ 534 - c: (bool){ bool } 535 - }) } 536 - } 537 - }, (#struct){ 538 - c: (#struct){ 539 - one: (#struct){ |((#struct){ 540 - a: (int){ int } 541 - }, (#struct){ 542 - b: (int){ int } 543 - }, (#struct){ 544 - c: (int){ int } 545 - }) } 546 - two: (#struct){ |((#struct){ 547 - a: (string){ string } 548 - }, (#struct){ 549 - b: (string){ string } 550 - }, (#struct){ 551 - c: (string){ string } 552 - }) } 553 - three: (#struct){ |((#struct){ 554 - a: (bool){ bool } 555 - }, (#struct){ 556 - b: (bool){ bool } 557 - }, (#struct){ 558 - c: (bool){ bool } 559 - }) } 560 - } 561 + a: ~(#D3) 562 + }, (#struct){ 563 + b: ~(#D3) 564 + }, (#struct){ 565 + c: ~(#D3) 566 }) } 567 #D3: (#struct){ 568 one: (#struct){ |((#struct){ 569 @@ -324,676 +54,81 @@ 570 c: (bool){ bool } 571 }) } 572 } 573 - root: (_|_){ 574 - // [structural cycle] 575 + root: (struct){ 576 y: ((list|struct)){ |((#struct){ 577 a: (#struct){ |((#struct){ 578 - a: (#struct){ 579 - one: (#struct){ |((#struct){ 580 - a: (int){ int } 581 - }, (#struct){ 582 - b: (int){ int } 583 - }, (#struct){ 584 - c: (int){ int } 585 - }) } 586 - two: (#struct){ |((#struct){ 587 - a: (string){ string } 588 - }, (#struct){ 589 - b: (string){ string } 590 - }, (#struct){ 591 - c: (string){ string } 592 - }) } 593 - three: (#struct){ |((#struct){ 594 - a: (bool){ bool } 595 - }, (#struct){ 596 - b: (bool){ bool } 597 - }, (#struct){ 598 - c: (bool){ bool } 599 - }) } 600 - } 601 - }, (#struct){ 602 - b: (#struct){ 603 - one: (#struct){ |((#struct){ 604 - a: (int){ int } 605 - }, (#struct){ 606 - b: (int){ int } 607 - }, (#struct){ 608 - c: (int){ int } 609 - }) } 610 - two: (#struct){ |((#struct){ 611 - a: (string){ string } 612 - }, (#struct){ 613 - b: (string){ string } 614 - }, (#struct){ 615 - c: (string){ string } 616 - }) } 617 - three: (#struct){ |((#struct){ 618 - a: (bool){ bool } 619 - }, (#struct){ 620 - b: (bool){ bool } 621 - }, (#struct){ 622 - c: (bool){ bool } 623 - }) } 624 - } 625 - }, (#struct){ 626 - c: (#struct){ 627 - one: (#struct){ |((#struct){ 628 - a: (int){ int } 629 - }, (#struct){ 630 - b: (int){ int } 631 - }, (#struct){ 632 - c: (int){ int } 633 - }) } 634 - two: (#struct){ |((#struct){ 635 - a: (string){ string } 636 - }, (#struct){ 637 - b: (string){ string } 638 - }, (#struct){ 639 - c: (string){ string } 640 - }) } 641 - three: (#struct){ |((#struct){ 642 - a: (bool){ bool } 643 - }, (#struct){ 644 - b: (bool){ bool } 645 - }, (#struct){ 646 - c: (bool){ bool } 647 - }) } 648 - } 649 + a: ~(#D3) 650 + }, (#struct){ 651 + b: ~(#D3) 652 + }, (#struct){ 653 + c: ~(#D3) 654 }) } 655 }, (#struct){ 656 b: (#struct){ |((#struct){ 657 - a: (#struct){ 658 - one: (#struct){ |((#struct){ 659 - a: (int){ int } 660 - }, (#struct){ 661 - b: (int){ int } 662 - }, (#struct){ 663 - c: (int){ int } 664 - }) } 665 - two: (#struct){ |((#struct){ 666 - a: (string){ string } 667 - }, (#struct){ 668 - b: (string){ string } 669 - }, (#struct){ 670 - c: (string){ string } 671 - }) } 672 - three: (#struct){ |((#struct){ 673 - a: (bool){ bool } 674 - }, (#struct){ 675 - b: (bool){ bool } 676 - }, (#struct){ 677 - c: (bool){ bool } 678 - }) } 679 - } 680 - }, (#struct){ 681 - b: (#struct){ 682 - one: (#struct){ |((#struct){ 683 - a: (int){ int } 684 - }, (#struct){ 685 - b: (int){ int } 686 - }, (#struct){ 687 - c: (int){ int } 688 - }) } 689 - two: (#struct){ |((#struct){ 690 - a: (string){ string } 691 - }, (#struct){ 692 - b: (string){ string } 693 - }, (#struct){ 694 - c: (string){ string } 695 - }) } 696 - three: (#struct){ |((#struct){ 697 - a: (bool){ bool } 698 - }, (#struct){ 699 - b: (bool){ bool } 700 - }, (#struct){ 701 - c: (bool){ bool } 702 - }) } 703 - } 704 - }, (#struct){ 705 - c: (#struct){ 706 - one: (#struct){ |((#struct){ 707 - a: (int){ int } 708 - }, (#struct){ 709 - b: (int){ int } 710 - }, (#struct){ 711 - c: (int){ int } 712 - }) } 713 - two: (#struct){ |((#struct){ 714 - a: (string){ string } 715 - }, (#struct){ 716 - b: (string){ string } 717 - }, (#struct){ 718 - c: (string){ string } 719 - }) } 720 - three: (#struct){ |((#struct){ 721 - a: (bool){ bool } 722 - }, (#struct){ 723 - b: (bool){ bool } 724 - }, (#struct){ 725 - c: (bool){ bool } 726 - }) } 727 - } 728 + a: ~(#D3) 729 + }, (#struct){ 730 + b: ~(#D3) 731 + }, (#struct){ 732 + c: ~(#D3) 733 }) } 734 }, (#struct){ 735 c: (#struct){ |((#struct){ 736 - a: (#struct){ 737 - one: (#struct){ |((#struct){ 738 - a: (int){ int } 739 - }, (#struct){ 740 - b: (int){ int } 741 - }, (#struct){ 742 - c: (int){ int } 743 - }) } 744 - two: (#struct){ |((#struct){ 745 - a: (string){ string } 746 - }, (#struct){ 747 - b: (string){ string } 748 - }, (#struct){ 749 - c: (string){ string } 750 - }) } 751 - three: (#struct){ |((#struct){ 752 - a: (bool){ bool } 753 - }, (#struct){ 754 - b: (bool){ bool } 755 - }, (#struct){ 756 - c: (bool){ bool } 757 - }) } 758 - } 759 - }, (#struct){ 760 - b: (#struct){ 761 - one: (#struct){ |((#struct){ 762 - a: (int){ int } 763 - }, (#struct){ 764 - b: (int){ int } 765 - }, (#struct){ 766 - c: (int){ int } 767 - }) } 768 - two: (#struct){ |((#struct){ 769 - a: (string){ string } 770 - }, (#struct){ 771 - b: (string){ string } 772 - }, (#struct){ 773 - c: (string){ string } 774 - }) } 775 - three: (#struct){ |((#struct){ 776 - a: (bool){ bool } 777 - }, (#struct){ 778 - b: (bool){ bool } 779 - }, (#struct){ 780 - c: (bool){ bool } 781 - }) } 782 - } 783 - }, (#struct){ 784 - c: (#struct){ 785 - one: (#struct){ |((#struct){ 786 - a: (int){ int } 787 - }, (#struct){ 788 - b: (int){ int } 789 - }, (#struct){ 790 - c: (int){ int } 791 - }) } 792 - two: (#struct){ |((#struct){ 793 - a: (string){ string } 794 - }, (#struct){ 795 - b: (string){ string } 796 - }, (#struct){ 797 - c: (string){ string } 798 - }) } 799 - three: (#struct){ |((#struct){ 800 - a: (bool){ bool } 801 - }, (#struct){ 802 - b: (bool){ bool } 803 - }, (#struct){ 804 - c: (bool){ bool } 805 - }) } 806 - } 807 + a: ~(#D3) 808 + }, (#struct){ 809 + b: ~(#D3) 810 + }, (#struct){ 811 + c: ~(#D3) 812 }) } 813 }, (#list){ 814 0: (#struct){ |((#struct){ 815 a: (#struct){ |((#struct){ 816 - a: (#struct){ 817 - one: (#struct){ |((#struct){ 818 - a: (int){ int } 819 - }, (#struct){ 820 - b: (int){ int } 821 - }, (#struct){ 822 - c: (int){ int } 823 - }) } 824 - two: (#struct){ |((#struct){ 825 - a: (string){ string } 826 - }, (#struct){ 827 - b: (string){ string } 828 - }, (#struct){ 829 - c: (string){ string } 830 - }) } 831 - three: (#struct){ |((#struct){ 832 - a: (bool){ bool } 833 - }, (#struct){ 834 - b: (bool){ bool } 835 - }, (#struct){ 836 - c: (bool){ bool } 837 - }) } 838 - } 839 - }, (#struct){ 840 - b: (#struct){ 841 - one: (#struct){ |((#struct){ 842 - a: (int){ int } 843 - }, (#struct){ 844 - b: (int){ int } 845 - }, (#struct){ 846 - c: (int){ int } 847 - }) } 848 - two: (#struct){ |((#struct){ 849 - a: (string){ string } 850 - }, (#struct){ 851 - b: (string){ string } 852 - }, (#struct){ 853 - c: (string){ string } 854 - }) } 855 - three: (#struct){ |((#struct){ 856 - a: (bool){ bool } 857 - }, (#struct){ 858 - b: (bool){ bool } 859 - }, (#struct){ 860 - c: (bool){ bool } 861 - }) } 862 - } 863 - }, (#struct){ 864 - c: (#struct){ 865 - one: (#struct){ |((#struct){ 866 - a: (int){ int } 867 - }, (#struct){ 868 - b: (int){ int } 869 - }, (#struct){ 870 - c: (int){ int } 871 - }) } 872 - two: (#struct){ |((#struct){ 873 - a: (string){ string } 874 - }, (#struct){ 875 - b: (string){ string } 876 - }, (#struct){ 877 - c: (string){ string } 878 - }) } 879 - three: (#struct){ |((#struct){ 880 - a: (bool){ bool } 881 - }, (#struct){ 882 - b: (bool){ bool } 883 - }, (#struct){ 884 - c: (bool){ bool } 885 - }) } 886 - } 887 - }) } 888 - }, (#struct){ 889 - b: (#struct){ |((#struct){ 890 - a: (#struct){ 891 - one: (#struct){ |((#struct){ 892 - a: (int){ int } 893 - }, (#struct){ 894 - b: (int){ int } 895 - }, (#struct){ 896 - c: (int){ int } 897 - }) } 898 - two: (#struct){ |((#struct){ 899 - a: (string){ string } 900 - }, (#struct){ 901 - b: (string){ string } 902 - }, (#struct){ 903 - c: (string){ string } 904 - }) } 905 - three: (#struct){ |((#struct){ 906 - a: (bool){ bool } 907 - }, (#struct){ 908 - b: (bool){ bool } 909 - }, (#struct){ 910 - c: (bool){ bool } 911 - }) } 912 - } 913 - }, (#struct){ 914 - b: (#struct){ 915 - one: (#struct){ |((#struct){ 916 - a: (int){ int } 917 - }, (#struct){ 918 - b: (int){ int } 919 - }, (#struct){ 920 - c: (int){ int } 921 - }) } 922 - two: (#struct){ |((#struct){ 923 - a: (string){ string } 924 - }, (#struct){ 925 - b: (string){ string } 926 - }, (#struct){ 927 - c: (string){ string } 928 - }) } 929 - three: (#struct){ |((#struct){ 930 - a: (bool){ bool } 931 - }, (#struct){ 932 - b: (bool){ bool } 933 - }, (#struct){ 934 - c: (bool){ bool } 935 - }) } 936 - } 937 - }, (#struct){ 938 - c: (#struct){ 939 - one: (#struct){ |((#struct){ 940 - a: (int){ int } 941 - }, (#struct){ 942 - b: (int){ int } 943 - }, (#struct){ 944 - c: (int){ int } 945 - }) } 946 - two: (#struct){ |((#struct){ 947 - a: (string){ string } 948 - }, (#struct){ 949 - b: (string){ string } 950 - }, (#struct){ 951 - c: (string){ string } 952 - }) } 953 - three: (#struct){ |((#struct){ 954 - a: (bool){ bool } 955 - }, (#struct){ 956 - b: (bool){ bool } 957 - }, (#struct){ 958 - c: (bool){ bool } 959 - }) } 960 - } 961 - }) } 962 - }, (#struct){ 963 - c: (#struct){ |((#struct){ 964 - a: (#struct){ 965 - one: (#struct){ |((#struct){ 966 - a: (int){ int } 967 - }, (#struct){ 968 - b: (int){ int } 969 - }, (#struct){ 970 - c: (int){ int } 971 - }) } 972 - two: (#struct){ |((#struct){ 973 - a: (string){ string } 974 - }, (#struct){ 975 - b: (string){ string } 976 - }, (#struct){ 977 - c: (string){ string } 978 - }) } 979 - three: (#struct){ |((#struct){ 980 - a: (bool){ bool } 981 - }, (#struct){ 982 - b: (bool){ bool } 983 - }, (#struct){ 984 - c: (bool){ bool } 985 - }) } 986 - } 987 - }, (#struct){ 988 - b: (#struct){ 989 - one: (#struct){ |((#struct){ 990 - a: (int){ int } 991 - }, (#struct){ 992 - b: (int){ int } 993 - }, (#struct){ 994 - c: (int){ int } 995 - }) } 996 - two: (#struct){ |((#struct){ 997 - a: (string){ string } 998 - }, (#struct){ 999 - b: (string){ string } 1000 - }, (#struct){ 1001 - c: (string){ string } 1002 - }) } 1003 - three: (#struct){ |((#struct){ 1004 - a: (bool){ bool } 1005 - }, (#struct){ 1006 - b: (bool){ bool } 1007 - }, (#struct){ 1008 - c: (bool){ bool } 1009 - }) } 1010 - } 1011 - }, (#struct){ 1012 - c: (#struct){ 1013 - one: (#struct){ |((#struct){ 1014 - a: (int){ int } 1015 - }, (#struct){ 1016 - b: (int){ int } 1017 - }, (#struct){ 1018 - c: (int){ int } 1019 - }) } 1020 - two: (#struct){ |((#struct){ 1021 - a: (string){ string } 1022 - }, (#struct){ 1023 - b: (string){ string } 1024 - }, (#struct){ 1025 - c: (string){ string } 1026 - }) } 1027 - three: (#struct){ |((#struct){ 1028 - a: (bool){ bool } 1029 - }, (#struct){ 1030 - b: (bool){ bool } 1031 - }, (#struct){ 1032 - c: (bool){ bool } 1033 - }) } 1034 - } 1035 + a: ~(#D3) 1036 + }, (#struct){ 1037 + b: ~(#D3) 1038 + }, (#struct){ 1039 + c: ~(#D3) 1040 + }) } 1041 + }, (#struct){ 1042 + b: (#struct){ |((#struct){ 1043 + a: ~(#D3) 1044 + }, (#struct){ 1045 + b: ~(#D3) 1046 + }, (#struct){ 1047 + c: ~(#D3) 1048 + }) } 1049 + }, (#struct){ 1050 + c: (#struct){ |((#struct){ 1051 + a: ~(#D3) 1052 + }, (#struct){ 1053 + b: ~(#D3) 1054 + }, (#struct){ 1055 + c: ~(#D3) 1056 }) } 1057 }) } 1058 }, (struct){ 1059 x: (#struct){ |((#struct){ 1060 a: (#struct){ |((#struct){ 1061 - a: (#struct){ 1062 - one: (#struct){ |((#struct){ 1063 - a: (int){ int } 1064 - }, (#struct){ 1065 - b: (int){ int } 1066 - }, (#struct){ 1067 - c: (int){ int } 1068 - }) } 1069 - two: (#struct){ |((#struct){ 1070 - a: (string){ string } 1071 - }, (#struct){ 1072 - b: (string){ string } 1073 - }, (#struct){ 1074 - c: (string){ string } 1075 - }) } 1076 - three: (#struct){ |((#struct){ 1077 - a: (bool){ bool } 1078 - }, (#struct){ 1079 - b: (bool){ bool } 1080 - }, (#struct){ 1081 - c: (bool){ bool } 1082 - }) } 1083 - } 1084 - }, (#struct){ 1085 - b: (#struct){ 1086 - one: (#struct){ |((#struct){ 1087 - a: (int){ int } 1088 - }, (#struct){ 1089 - b: (int){ int } 1090 - }, (#struct){ 1091 - c: (int){ int } 1092 - }) } 1093 - two: (#struct){ |((#struct){ 1094 - a: (string){ string } 1095 - }, (#struct){ 1096 - b: (string){ string } 1097 - }, (#struct){ 1098 - c: (string){ string } 1099 - }) } 1100 - three: (#struct){ |((#struct){ 1101 - a: (bool){ bool } 1102 - }, (#struct){ 1103 - b: (bool){ bool } 1104 - }, (#struct){ 1105 - c: (bool){ bool } 1106 - }) } 1107 - } 1108 - }, (#struct){ 1109 - c: (#struct){ 1110 - one: (#struct){ |((#struct){ 1111 - a: (int){ int } 1112 - }, (#struct){ 1113 - b: (int){ int } 1114 - }, (#struct){ 1115 - c: (int){ int } 1116 - }) } 1117 - two: (#struct){ |((#struct){ 1118 - a: (string){ string } 1119 - }, (#struct){ 1120 - b: (string){ string } 1121 - }, (#struct){ 1122 - c: (string){ string } 1123 - }) } 1124 - three: (#struct){ |((#struct){ 1125 - a: (bool){ bool } 1126 - }, (#struct){ 1127 - b: (bool){ bool } 1128 - }, (#struct){ 1129 - c: (bool){ bool } 1130 - }) } 1131 - } 1132 - }) } 1133 - }, (#struct){ 1134 - b: (#struct){ |((#struct){ 1135 - a: (#struct){ 1136 - one: (#struct){ |((#struct){ 1137 - a: (int){ int } 1138 - }, (#struct){ 1139 - b: (int){ int } 1140 - }, (#struct){ 1141 - c: (int){ int } 1142 - }) } 1143 - two: (#struct){ |((#struct){ 1144 - a: (string){ string } 1145 - }, (#struct){ 1146 - b: (string){ string } 1147 - }, (#struct){ 1148 - c: (string){ string } 1149 - }) } 1150 - three: (#struct){ |((#struct){ 1151 - a: (bool){ bool } 1152 - }, (#struct){ 1153 - b: (bool){ bool } 1154 - }, (#struct){ 1155 - c: (bool){ bool } 1156 - }) } 1157 - } 1158 - }, (#struct){ 1159 - b: (#struct){ 1160 - one: (#struct){ |((#struct){ 1161 - a: (int){ int } 1162 - }, (#struct){ 1163 - b: (int){ int } 1164 - }, (#struct){ 1165 - c: (int){ int } 1166 - }) } 1167 - two: (#struct){ |((#struct){ 1168 - a: (string){ string } 1169 - }, (#struct){ 1170 - b: (string){ string } 1171 - }, (#struct){ 1172 - c: (string){ string } 1173 - }) } 1174 - three: (#struct){ |((#struct){ 1175 - a: (bool){ bool } 1176 - }, (#struct){ 1177 - b: (bool){ bool } 1178 - }, (#struct){ 1179 - c: (bool){ bool } 1180 - }) } 1181 - } 1182 - }, (#struct){ 1183 - c: (#struct){ 1184 - one: (#struct){ |((#struct){ 1185 - a: (int){ int } 1186 - }, (#struct){ 1187 - b: (int){ int } 1188 - }, (#struct){ 1189 - c: (int){ int } 1190 - }) } 1191 - two: (#struct){ |((#struct){ 1192 - a: (string){ string } 1193 - }, (#struct){ 1194 - b: (string){ string } 1195 - }, (#struct){ 1196 - c: (string){ string } 1197 - }) } 1198 - three: (#struct){ |((#struct){ 1199 - a: (bool){ bool } 1200 - }, (#struct){ 1201 - b: (bool){ bool } 1202 - }, (#struct){ 1203 - c: (bool){ bool } 1204 - }) } 1205 - } 1206 - }) } 1207 - }, (#struct){ 1208 - c: (#struct){ |((#struct){ 1209 - a: (#struct){ 1210 - one: (#struct){ |((#struct){ 1211 - a: (int){ int } 1212 - }, (#struct){ 1213 - b: (int){ int } 1214 - }, (#struct){ 1215 - c: (int){ int } 1216 - }) } 1217 - two: (#struct){ |((#struct){ 1218 - a: (string){ string } 1219 - }, (#struct){ 1220 - b: (string){ string } 1221 - }, (#struct){ 1222 - c: (string){ string } 1223 - }) } 1224 - three: (#struct){ |((#struct){ 1225 - a: (bool){ bool } 1226 - }, (#struct){ 1227 - b: (bool){ bool } 1228 - }, (#struct){ 1229 - c: (bool){ bool } 1230 - }) } 1231 - } 1232 - }, (#struct){ 1233 - b: (#struct){ 1234 - one: (#struct){ |((#struct){ 1235 - a: (int){ int } 1236 - }, (#struct){ 1237 - b: (int){ int } 1238 - }, (#struct){ 1239 - c: (int){ int } 1240 - }) } 1241 - two: (#struct){ |((#struct){ 1242 - a: (string){ string } 1243 - }, (#struct){ 1244 - b: (string){ string } 1245 - }, (#struct){ 1246 - c: (string){ string } 1247 - }) } 1248 - three: (#struct){ |((#struct){ 1249 - a: (bool){ bool } 1250 - }, (#struct){ 1251 - b: (bool){ bool } 1252 - }, (#struct){ 1253 - c: (bool){ bool } 1254 - }) } 1255 - } 1256 - }, (#struct){ 1257 - c: (#struct){ 1258 - one: (#struct){ |((#struct){ 1259 - a: (int){ int } 1260 - }, (#struct){ 1261 - b: (int){ int } 1262 - }, (#struct){ 1263 - c: (int){ int } 1264 - }) } 1265 - two: (#struct){ |((#struct){ 1266 - a: (string){ string } 1267 - }, (#struct){ 1268 - b: (string){ string } 1269 - }, (#struct){ 1270 - c: (string){ string } 1271 - }) } 1272 - three: (#struct){ |((#struct){ 1273 - a: (bool){ bool } 1274 - }, (#struct){ 1275 - b: (bool){ bool } 1276 - }, (#struct){ 1277 - c: (bool){ bool } 1278 - }) } 1279 - } 1280 + a: ~(#D3) 1281 + }, (#struct){ 1282 + b: ~(#D3) 1283 + }, (#struct){ 1284 + c: ~(#D3) 1285 + }) } 1286 + }, (#struct){ 1287 + b: (#struct){ |((#struct){ 1288 + a: ~(#D3) 1289 + }, (#struct){ 1290 + b: ~(#D3) 1291 + }, (#struct){ 1292 + c: ~(#D3) 1293 + }) } 1294 + }, (#struct){ 1295 + c: (#struct){ |((#struct){ 1296 + a: ~(#D3) 1297 + }, (#struct){ 1298 + b: ~(#D3) 1299 + }, (#struct){ 1300 + c: ~(#D3) 1301 }) } 1302 }) } 1303 }) } 1304 @@ -1009,34 +144,17 @@ 1305 data: (struct){ 1306 } 1307 } 1308 - "2": (_|_){ 1309 - // [structural cycle] 1310 - data: (_|_){ 1311 - // [structural cycle] root_2: structural cycle: 1312 - // ./in.cue:19:18 1313 - } 1314 - } 1315 - "3": (_|_){ 1316 - // [structural cycle] 1317 - data: (_|_){ 1318 - // [structural cycle] root_2: structural cycle: 1319 - // ./in.cue:19:18 1320 - } 1321 - } 1322 - } 1323 - let root_0#1 = (_|_){ 1324 - // [structural cycle] root_0: structural cycle: 1325 - // ./in.cue:17:18 1326 - } 1327 - let root_1#2 = (_|_){ 1328 - // [structural cycle] root_1: structural cycle: 1329 - // ./in.cue:18:18 1330 - } 1331 - root_2: (_|_){ 1332 - // [structural cycle] root_2: structural cycle: 1333 - // ./in.cue:19:18 1334 - } 1335 - root_3: (_|_){ 1336 - // [structural cycle] 1337 - } 1338 + "2": (struct){ 1339 + data: (struct){ 1340 + } 1341 + } 1342 + "3": (struct){ 1343 + data: (struct){ 1344 + } 1345 + } 1346 + } 1347 + let root_0#1 = ~(root) 1348 + let root_1#2 = ~(root) 1349 + root_2: ~(root) 1350 + root_3: ~(root) 1351 } 1352 -- out/eval -- 1353 Errors: 1354 root_2: structural cycle: 1355 ./in.cue:19:18 1356 1357 Result: 1358 (_|_){ 1359 // [structural cycle] 1360 #D1: (#struct){ |((#struct){ 1361 a: (#struct){ |((#struct){ 1362 a: (#struct){ 1363 one: (#struct){ |((#struct){ 1364 a: (int){ int } 1365 }, (#struct){ 1366 b: (int){ int } 1367 }, (#struct){ 1368 c: (int){ int } 1369 }) } 1370 two: (#struct){ |((#struct){ 1371 a: (string){ string } 1372 }, (#struct){ 1373 b: (string){ string } 1374 }, (#struct){ 1375 c: (string){ string } 1376 }) } 1377 three: (#struct){ |((#struct){ 1378 a: (bool){ bool } 1379 }, (#struct){ 1380 b: (bool){ bool } 1381 }, (#struct){ 1382 c: (bool){ bool } 1383 }) } 1384 } 1385 }, (#struct){ 1386 b: (#struct){ 1387 one: (#struct){ |((#struct){ 1388 a: (int){ int } 1389 }, (#struct){ 1390 b: (int){ int } 1391 }, (#struct){ 1392 c: (int){ int } 1393 }) } 1394 two: (#struct){ |((#struct){ 1395 a: (string){ string } 1396 }, (#struct){ 1397 b: (string){ string } 1398 }, (#struct){ 1399 c: (string){ string } 1400 }) } 1401 three: (#struct){ |((#struct){ 1402 a: (bool){ bool } 1403 }, (#struct){ 1404 b: (bool){ bool } 1405 }, (#struct){ 1406 c: (bool){ bool } 1407 }) } 1408 } 1409 }, (#struct){ 1410 c: (#struct){ 1411 one: (#struct){ |((#struct){ 1412 a: (int){ int } 1413 }, (#struct){ 1414 b: (int){ int } 1415 }, (#struct){ 1416 c: (int){ int } 1417 }) } 1418 two: (#struct){ |((#struct){ 1419 a: (string){ string } 1420 }, (#struct){ 1421 b: (string){ string } 1422 }, (#struct){ 1423 c: (string){ string } 1424 }) } 1425 three: (#struct){ |((#struct){ 1426 a: (bool){ bool } 1427 }, (#struct){ 1428 b: (bool){ bool } 1429 }, (#struct){ 1430 c: (bool){ bool } 1431 }) } 1432 } 1433 }) } 1434 }, (#struct){ 1435 b: (#struct){ |((#struct){ 1436 a: (#struct){ 1437 one: (#struct){ |((#struct){ 1438 a: (int){ int } 1439 }, (#struct){ 1440 b: (int){ int } 1441 }, (#struct){ 1442 c: (int){ int } 1443 }) } 1444 two: (#struct){ |((#struct){ 1445 a: (string){ string } 1446 }, (#struct){ 1447 b: (string){ string } 1448 }, (#struct){ 1449 c: (string){ string } 1450 }) } 1451 three: (#struct){ |((#struct){ 1452 a: (bool){ bool } 1453 }, (#struct){ 1454 b: (bool){ bool } 1455 }, (#struct){ 1456 c: (bool){ bool } 1457 }) } 1458 } 1459 }, (#struct){ 1460 b: (#struct){ 1461 one: (#struct){ |((#struct){ 1462 a: (int){ int } 1463 }, (#struct){ 1464 b: (int){ int } 1465 }, (#struct){ 1466 c: (int){ int } 1467 }) } 1468 two: (#struct){ |((#struct){ 1469 a: (string){ string } 1470 }, (#struct){ 1471 b: (string){ string } 1472 }, (#struct){ 1473 c: (string){ string } 1474 }) } 1475 three: (#struct){ |((#struct){ 1476 a: (bool){ bool } 1477 }, (#struct){ 1478 b: (bool){ bool } 1479 }, (#struct){ 1480 c: (bool){ bool } 1481 }) } 1482 } 1483 }, (#struct){ 1484 c: (#struct){ 1485 one: (#struct){ |((#struct){ 1486 a: (int){ int } 1487 }, (#struct){ 1488 b: (int){ int } 1489 }, (#struct){ 1490 c: (int){ int } 1491 }) } 1492 two: (#struct){ |((#struct){ 1493 a: (string){ string } 1494 }, (#struct){ 1495 b: (string){ string } 1496 }, (#struct){ 1497 c: (string){ string } 1498 }) } 1499 three: (#struct){ |((#struct){ 1500 a: (bool){ bool } 1501 }, (#struct){ 1502 b: (bool){ bool } 1503 }, (#struct){ 1504 c: (bool){ bool } 1505 }) } 1506 } 1507 }) } 1508 }, (#struct){ 1509 c: (#struct){ |((#struct){ 1510 a: (#struct){ 1511 one: (#struct){ |((#struct){ 1512 a: (int){ int } 1513 }, (#struct){ 1514 b: (int){ int } 1515 }, (#struct){ 1516 c: (int){ int } 1517 }) } 1518 two: (#struct){ |((#struct){ 1519 a: (string){ string } 1520 }, (#struct){ 1521 b: (string){ string } 1522 }, (#struct){ 1523 c: (string){ string } 1524 }) } 1525 three: (#struct){ |((#struct){ 1526 a: (bool){ bool } 1527 }, (#struct){ 1528 b: (bool){ bool } 1529 }, (#struct){ 1530 c: (bool){ bool } 1531 }) } 1532 } 1533 }, (#struct){ 1534 b: (#struct){ 1535 one: (#struct){ |((#struct){ 1536 a: (int){ int } 1537 }, (#struct){ 1538 b: (int){ int } 1539 }, (#struct){ 1540 c: (int){ int } 1541 }) } 1542 two: (#struct){ |((#struct){ 1543 a: (string){ string } 1544 }, (#struct){ 1545 b: (string){ string } 1546 }, (#struct){ 1547 c: (string){ string } 1548 }) } 1549 three: (#struct){ |((#struct){ 1550 a: (bool){ bool } 1551 }, (#struct){ 1552 b: (bool){ bool } 1553 }, (#struct){ 1554 c: (bool){ bool } 1555 }) } 1556 } 1557 }, (#struct){ 1558 c: (#struct){ 1559 one: (#struct){ |((#struct){ 1560 a: (int){ int } 1561 }, (#struct){ 1562 b: (int){ int } 1563 }, (#struct){ 1564 c: (int){ int } 1565 }) } 1566 two: (#struct){ |((#struct){ 1567 a: (string){ string } 1568 }, (#struct){ 1569 b: (string){ string } 1570 }, (#struct){ 1571 c: (string){ string } 1572 }) } 1573 three: (#struct){ |((#struct){ 1574 a: (bool){ bool } 1575 }, (#struct){ 1576 b: (bool){ bool } 1577 }, (#struct){ 1578 c: (bool){ bool } 1579 }) } 1580 } 1581 }) } 1582 }) } 1583 #D2: (#struct){ |((#struct){ 1584 a: (#struct){ 1585 one: (#struct){ |((#struct){ 1586 a: (int){ int } 1587 }, (#struct){ 1588 b: (int){ int } 1589 }, (#struct){ 1590 c: (int){ int } 1591 }) } 1592 two: (#struct){ |((#struct){ 1593 a: (string){ string } 1594 }, (#struct){ 1595 b: (string){ string } 1596 }, (#struct){ 1597 c: (string){ string } 1598 }) } 1599 three: (#struct){ |((#struct){ 1600 a: (bool){ bool } 1601 }, (#struct){ 1602 b: (bool){ bool } 1603 }, (#struct){ 1604 c: (bool){ bool } 1605 }) } 1606 } 1607 }, (#struct){ 1608 b: (#struct){ 1609 one: (#struct){ |((#struct){ 1610 a: (int){ int } 1611 }, (#struct){ 1612 b: (int){ int } 1613 }, (#struct){ 1614 c: (int){ int } 1615 }) } 1616 two: (#struct){ |((#struct){ 1617 a: (string){ string } 1618 }, (#struct){ 1619 b: (string){ string } 1620 }, (#struct){ 1621 c: (string){ string } 1622 }) } 1623 three: (#struct){ |((#struct){ 1624 a: (bool){ bool } 1625 }, (#struct){ 1626 b: (bool){ bool } 1627 }, (#struct){ 1628 c: (bool){ bool } 1629 }) } 1630 } 1631 }, (#struct){ 1632 c: (#struct){ 1633 one: (#struct){ |((#struct){ 1634 a: (int){ int } 1635 }, (#struct){ 1636 b: (int){ int } 1637 }, (#struct){ 1638 c: (int){ int } 1639 }) } 1640 two: (#struct){ |((#struct){ 1641 a: (string){ string } 1642 }, (#struct){ 1643 b: (string){ string } 1644 }, (#struct){ 1645 c: (string){ string } 1646 }) } 1647 three: (#struct){ |((#struct){ 1648 a: (bool){ bool } 1649 }, (#struct){ 1650 b: (bool){ bool } 1651 }, (#struct){ 1652 c: (bool){ bool } 1653 }) } 1654 } 1655 }) } 1656 #D3: (#struct){ 1657 one: (#struct){ |((#struct){ 1658 a: (int){ int } 1659 }, (#struct){ 1660 b: (int){ int } 1661 }, (#struct){ 1662 c: (int){ int } 1663 }) } 1664 two: (#struct){ |((#struct){ 1665 a: (string){ string } 1666 }, (#struct){ 1667 b: (string){ string } 1668 }, (#struct){ 1669 c: (string){ string } 1670 }) } 1671 three: (#struct){ |((#struct){ 1672 a: (bool){ bool } 1673 }, (#struct){ 1674 b: (bool){ bool } 1675 }, (#struct){ 1676 c: (bool){ bool } 1677 }) } 1678 } 1679 root: (_|_){ 1680 // [structural cycle] 1681 y: ((list|struct)){ |((#struct){ 1682 a: (#struct){ |((#struct){ 1683 a: (#struct){ 1684 one: (#struct){ |((#struct){ 1685 a: (int){ int } 1686 }, (#struct){ 1687 b: (int){ int } 1688 }, (#struct){ 1689 c: (int){ int } 1690 }) } 1691 two: (#struct){ |((#struct){ 1692 a: (string){ string } 1693 }, (#struct){ 1694 b: (string){ string } 1695 }, (#struct){ 1696 c: (string){ string } 1697 }) } 1698 three: (#struct){ |((#struct){ 1699 a: (bool){ bool } 1700 }, (#struct){ 1701 b: (bool){ bool } 1702 }, (#struct){ 1703 c: (bool){ bool } 1704 }) } 1705 } 1706 }, (#struct){ 1707 b: (#struct){ 1708 one: (#struct){ |((#struct){ 1709 a: (int){ int } 1710 }, (#struct){ 1711 b: (int){ int } 1712 }, (#struct){ 1713 c: (int){ int } 1714 }) } 1715 two: (#struct){ |((#struct){ 1716 a: (string){ string } 1717 }, (#struct){ 1718 b: (string){ string } 1719 }, (#struct){ 1720 c: (string){ string } 1721 }) } 1722 three: (#struct){ |((#struct){ 1723 a: (bool){ bool } 1724 }, (#struct){ 1725 b: (bool){ bool } 1726 }, (#struct){ 1727 c: (bool){ bool } 1728 }) } 1729 } 1730 }, (#struct){ 1731 c: (#struct){ 1732 one: (#struct){ |((#struct){ 1733 a: (int){ int } 1734 }, (#struct){ 1735 b: (int){ int } 1736 }, (#struct){ 1737 c: (int){ int } 1738 }) } 1739 two: (#struct){ |((#struct){ 1740 a: (string){ string } 1741 }, (#struct){ 1742 b: (string){ string } 1743 }, (#struct){ 1744 c: (string){ string } 1745 }) } 1746 three: (#struct){ |((#struct){ 1747 a: (bool){ bool } 1748 }, (#struct){ 1749 b: (bool){ bool } 1750 }, (#struct){ 1751 c: (bool){ bool } 1752 }) } 1753 } 1754 }) } 1755 }, (#struct){ 1756 b: (#struct){ |((#struct){ 1757 a: (#struct){ 1758 one: (#struct){ |((#struct){ 1759 a: (int){ int } 1760 }, (#struct){ 1761 b: (int){ int } 1762 }, (#struct){ 1763 c: (int){ int } 1764 }) } 1765 two: (#struct){ |((#struct){ 1766 a: (string){ string } 1767 }, (#struct){ 1768 b: (string){ string } 1769 }, (#struct){ 1770 c: (string){ string } 1771 }) } 1772 three: (#struct){ |((#struct){ 1773 a: (bool){ bool } 1774 }, (#struct){ 1775 b: (bool){ bool } 1776 }, (#struct){ 1777 c: (bool){ bool } 1778 }) } 1779 } 1780 }, (#struct){ 1781 b: (#struct){ 1782 one: (#struct){ |((#struct){ 1783 a: (int){ int } 1784 }, (#struct){ 1785 b: (int){ int } 1786 }, (#struct){ 1787 c: (int){ int } 1788 }) } 1789 two: (#struct){ |((#struct){ 1790 a: (string){ string } 1791 }, (#struct){ 1792 b: (string){ string } 1793 }, (#struct){ 1794 c: (string){ string } 1795 }) } 1796 three: (#struct){ |((#struct){ 1797 a: (bool){ bool } 1798 }, (#struct){ 1799 b: (bool){ bool } 1800 }, (#struct){ 1801 c: (bool){ bool } 1802 }) } 1803 } 1804 }, (#struct){ 1805 c: (#struct){ 1806 one: (#struct){ |((#struct){ 1807 a: (int){ int } 1808 }, (#struct){ 1809 b: (int){ int } 1810 }, (#struct){ 1811 c: (int){ int } 1812 }) } 1813 two: (#struct){ |((#struct){ 1814 a: (string){ string } 1815 }, (#struct){ 1816 b: (string){ string } 1817 }, (#struct){ 1818 c: (string){ string } 1819 }) } 1820 three: (#struct){ |((#struct){ 1821 a: (bool){ bool } 1822 }, (#struct){ 1823 b: (bool){ bool } 1824 }, (#struct){ 1825 c: (bool){ bool } 1826 }) } 1827 } 1828 }) } 1829 }, (#struct){ 1830 c: (#struct){ |((#struct){ 1831 a: (#struct){ 1832 one: (#struct){ |((#struct){ 1833 a: (int){ int } 1834 }, (#struct){ 1835 b: (int){ int } 1836 }, (#struct){ 1837 c: (int){ int } 1838 }) } 1839 two: (#struct){ |((#struct){ 1840 a: (string){ string } 1841 }, (#struct){ 1842 b: (string){ string } 1843 }, (#struct){ 1844 c: (string){ string } 1845 }) } 1846 three: (#struct){ |((#struct){ 1847 a: (bool){ bool } 1848 }, (#struct){ 1849 b: (bool){ bool } 1850 }, (#struct){ 1851 c: (bool){ bool } 1852 }) } 1853 } 1854 }, (#struct){ 1855 b: (#struct){ 1856 one: (#struct){ |((#struct){ 1857 a: (int){ int } 1858 }, (#struct){ 1859 b: (int){ int } 1860 }, (#struct){ 1861 c: (int){ int } 1862 }) } 1863 two: (#struct){ |((#struct){ 1864 a: (string){ string } 1865 }, (#struct){ 1866 b: (string){ string } 1867 }, (#struct){ 1868 c: (string){ string } 1869 }) } 1870 three: (#struct){ |((#struct){ 1871 a: (bool){ bool } 1872 }, (#struct){ 1873 b: (bool){ bool } 1874 }, (#struct){ 1875 c: (bool){ bool } 1876 }) } 1877 } 1878 }, (#struct){ 1879 c: (#struct){ 1880 one: (#struct){ |((#struct){ 1881 a: (int){ int } 1882 }, (#struct){ 1883 b: (int){ int } 1884 }, (#struct){ 1885 c: (int){ int } 1886 }) } 1887 two: (#struct){ |((#struct){ 1888 a: (string){ string } 1889 }, (#struct){ 1890 b: (string){ string } 1891 }, (#struct){ 1892 c: (string){ string } 1893 }) } 1894 three: (#struct){ |((#struct){ 1895 a: (bool){ bool } 1896 }, (#struct){ 1897 b: (bool){ bool } 1898 }, (#struct){ 1899 c: (bool){ bool } 1900 }) } 1901 } 1902 }) } 1903 }, (#list){ 1904 0: (#struct){ |((#struct){ 1905 a: (#struct){ |((#struct){ 1906 a: (#struct){ 1907 one: (#struct){ |((#struct){ 1908 a: (int){ int } 1909 }, (#struct){ 1910 b: (int){ int } 1911 }, (#struct){ 1912 c: (int){ int } 1913 }) } 1914 two: (#struct){ |((#struct){ 1915 a: (string){ string } 1916 }, (#struct){ 1917 b: (string){ string } 1918 }, (#struct){ 1919 c: (string){ string } 1920 }) } 1921 three: (#struct){ |((#struct){ 1922 a: (bool){ bool } 1923 }, (#struct){ 1924 b: (bool){ bool } 1925 }, (#struct){ 1926 c: (bool){ bool } 1927 }) } 1928 } 1929 }, (#struct){ 1930 b: (#struct){ 1931 one: (#struct){ |((#struct){ 1932 a: (int){ int } 1933 }, (#struct){ 1934 b: (int){ int } 1935 }, (#struct){ 1936 c: (int){ int } 1937 }) } 1938 two: (#struct){ |((#struct){ 1939 a: (string){ string } 1940 }, (#struct){ 1941 b: (string){ string } 1942 }, (#struct){ 1943 c: (string){ string } 1944 }) } 1945 three: (#struct){ |((#struct){ 1946 a: (bool){ bool } 1947 }, (#struct){ 1948 b: (bool){ bool } 1949 }, (#struct){ 1950 c: (bool){ bool } 1951 }) } 1952 } 1953 }, (#struct){ 1954 c: (#struct){ 1955 one: (#struct){ |((#struct){ 1956 a: (int){ int } 1957 }, (#struct){ 1958 b: (int){ int } 1959 }, (#struct){ 1960 c: (int){ int } 1961 }) } 1962 two: (#struct){ |((#struct){ 1963 a: (string){ string } 1964 }, (#struct){ 1965 b: (string){ string } 1966 }, (#struct){ 1967 c: (string){ string } 1968 }) } 1969 three: (#struct){ |((#struct){ 1970 a: (bool){ bool } 1971 }, (#struct){ 1972 b: (bool){ bool } 1973 }, (#struct){ 1974 c: (bool){ bool } 1975 }) } 1976 } 1977 }) } 1978 }, (#struct){ 1979 b: (#struct){ |((#struct){ 1980 a: (#struct){ 1981 one: (#struct){ |((#struct){ 1982 a: (int){ int } 1983 }, (#struct){ 1984 b: (int){ int } 1985 }, (#struct){ 1986 c: (int){ int } 1987 }) } 1988 two: (#struct){ |((#struct){ 1989 a: (string){ string } 1990 }, (#struct){ 1991 b: (string){ string } 1992 }, (#struct){ 1993 c: (string){ string } 1994 }) } 1995 three: (#struct){ |((#struct){ 1996 a: (bool){ bool } 1997 }, (#struct){ 1998 b: (bool){ bool } 1999 }, (#struct){ 2000 c: (bool){ bool } 2001 }) } 2002 } 2003 }, (#struct){ 2004 b: (#struct){ 2005 one: (#struct){ |((#struct){ 2006 a: (int){ int } 2007 }, (#struct){ 2008 b: (int){ int } 2009 }, (#struct){ 2010 c: (int){ int } 2011 }) } 2012 two: (#struct){ |((#struct){ 2013 a: (string){ string } 2014 }, (#struct){ 2015 b: (string){ string } 2016 }, (#struct){ 2017 c: (string){ string } 2018 }) } 2019 three: (#struct){ |((#struct){ 2020 a: (bool){ bool } 2021 }, (#struct){ 2022 b: (bool){ bool } 2023 }, (#struct){ 2024 c: (bool){ bool } 2025 }) } 2026 } 2027 }, (#struct){ 2028 c: (#struct){ 2029 one: (#struct){ |((#struct){ 2030 a: (int){ int } 2031 }, (#struct){ 2032 b: (int){ int } 2033 }, (#struct){ 2034 c: (int){ int } 2035 }) } 2036 two: (#struct){ |((#struct){ 2037 a: (string){ string } 2038 }, (#struct){ 2039 b: (string){ string } 2040 }, (#struct){ 2041 c: (string){ string } 2042 }) } 2043 three: (#struct){ |((#struct){ 2044 a: (bool){ bool } 2045 }, (#struct){ 2046 b: (bool){ bool } 2047 }, (#struct){ 2048 c: (bool){ bool } 2049 }) } 2050 } 2051 }) } 2052 }, (#struct){ 2053 c: (#struct){ |((#struct){ 2054 a: (#struct){ 2055 one: (#struct){ |((#struct){ 2056 a: (int){ int } 2057 }, (#struct){ 2058 b: (int){ int } 2059 }, (#struct){ 2060 c: (int){ int } 2061 }) } 2062 two: (#struct){ |((#struct){ 2063 a: (string){ string } 2064 }, (#struct){ 2065 b: (string){ string } 2066 }, (#struct){ 2067 c: (string){ string } 2068 }) } 2069 three: (#struct){ |((#struct){ 2070 a: (bool){ bool } 2071 }, (#struct){ 2072 b: (bool){ bool } 2073 }, (#struct){ 2074 c: (bool){ bool } 2075 }) } 2076 } 2077 }, (#struct){ 2078 b: (#struct){ 2079 one: (#struct){ |((#struct){ 2080 a: (int){ int } 2081 }, (#struct){ 2082 b: (int){ int } 2083 }, (#struct){ 2084 c: (int){ int } 2085 }) } 2086 two: (#struct){ |((#struct){ 2087 a: (string){ string } 2088 }, (#struct){ 2089 b: (string){ string } 2090 }, (#struct){ 2091 c: (string){ string } 2092 }) } 2093 three: (#struct){ |((#struct){ 2094 a: (bool){ bool } 2095 }, (#struct){ 2096 b: (bool){ bool } 2097 }, (#struct){ 2098 c: (bool){ bool } 2099 }) } 2100 } 2101 }, (#struct){ 2102 c: (#struct){ 2103 one: (#struct){ |((#struct){ 2104 a: (int){ int } 2105 }, (#struct){ 2106 b: (int){ int } 2107 }, (#struct){ 2108 c: (int){ int } 2109 }) } 2110 two: (#struct){ |((#struct){ 2111 a: (string){ string } 2112 }, (#struct){ 2113 b: (string){ string } 2114 }, (#struct){ 2115 c: (string){ string } 2116 }) } 2117 three: (#struct){ |((#struct){ 2118 a: (bool){ bool } 2119 }, (#struct){ 2120 b: (bool){ bool } 2121 }, (#struct){ 2122 c: (bool){ bool } 2123 }) } 2124 } 2125 }) } 2126 }) } 2127 }, (struct){ 2128 x: (#struct){ |((#struct){ 2129 a: (#struct){ |((#struct){ 2130 a: (#struct){ 2131 one: (#struct){ |((#struct){ 2132 a: (int){ int } 2133 }, (#struct){ 2134 b: (int){ int } 2135 }, (#struct){ 2136 c: (int){ int } 2137 }) } 2138 two: (#struct){ |((#struct){ 2139 a: (string){ string } 2140 }, (#struct){ 2141 b: (string){ string } 2142 }, (#struct){ 2143 c: (string){ string } 2144 }) } 2145 three: (#struct){ |((#struct){ 2146 a: (bool){ bool } 2147 }, (#struct){ 2148 b: (bool){ bool } 2149 }, (#struct){ 2150 c: (bool){ bool } 2151 }) } 2152 } 2153 }, (#struct){ 2154 b: (#struct){ 2155 one: (#struct){ |((#struct){ 2156 a: (int){ int } 2157 }, (#struct){ 2158 b: (int){ int } 2159 }, (#struct){ 2160 c: (int){ int } 2161 }) } 2162 two: (#struct){ |((#struct){ 2163 a: (string){ string } 2164 }, (#struct){ 2165 b: (string){ string } 2166 }, (#struct){ 2167 c: (string){ string } 2168 }) } 2169 three: (#struct){ |((#struct){ 2170 a: (bool){ bool } 2171 }, (#struct){ 2172 b: (bool){ bool } 2173 }, (#struct){ 2174 c: (bool){ bool } 2175 }) } 2176 } 2177 }, (#struct){ 2178 c: (#struct){ 2179 one: (#struct){ |((#struct){ 2180 a: (int){ int } 2181 }, (#struct){ 2182 b: (int){ int } 2183 }, (#struct){ 2184 c: (int){ int } 2185 }) } 2186 two: (#struct){ |((#struct){ 2187 a: (string){ string } 2188 }, (#struct){ 2189 b: (string){ string } 2190 }, (#struct){ 2191 c: (string){ string } 2192 }) } 2193 three: (#struct){ |((#struct){ 2194 a: (bool){ bool } 2195 }, (#struct){ 2196 b: (bool){ bool } 2197 }, (#struct){ 2198 c: (bool){ bool } 2199 }) } 2200 } 2201 }) } 2202 }, (#struct){ 2203 b: (#struct){ |((#struct){ 2204 a: (#struct){ 2205 one: (#struct){ |((#struct){ 2206 a: (int){ int } 2207 }, (#struct){ 2208 b: (int){ int } 2209 }, (#struct){ 2210 c: (int){ int } 2211 }) } 2212 two: (#struct){ |((#struct){ 2213 a: (string){ string } 2214 }, (#struct){ 2215 b: (string){ string } 2216 }, (#struct){ 2217 c: (string){ string } 2218 }) } 2219 three: (#struct){ |((#struct){ 2220 a: (bool){ bool } 2221 }, (#struct){ 2222 b: (bool){ bool } 2223 }, (#struct){ 2224 c: (bool){ bool } 2225 }) } 2226 } 2227 }, (#struct){ 2228 b: (#struct){ 2229 one: (#struct){ |((#struct){ 2230 a: (int){ int } 2231 }, (#struct){ 2232 b: (int){ int } 2233 }, (#struct){ 2234 c: (int){ int } 2235 }) } 2236 two: (#struct){ |((#struct){ 2237 a: (string){ string } 2238 }, (#struct){ 2239 b: (string){ string } 2240 }, (#struct){ 2241 c: (string){ string } 2242 }) } 2243 three: (#struct){ |((#struct){ 2244 a: (bool){ bool } 2245 }, (#struct){ 2246 b: (bool){ bool } 2247 }, (#struct){ 2248 c: (bool){ bool } 2249 }) } 2250 } 2251 }, (#struct){ 2252 c: (#struct){ 2253 one: (#struct){ |((#struct){ 2254 a: (int){ int } 2255 }, (#struct){ 2256 b: (int){ int } 2257 }, (#struct){ 2258 c: (int){ int } 2259 }) } 2260 two: (#struct){ |((#struct){ 2261 a: (string){ string } 2262 }, (#struct){ 2263 b: (string){ string } 2264 }, (#struct){ 2265 c: (string){ string } 2266 }) } 2267 three: (#struct){ |((#struct){ 2268 a: (bool){ bool } 2269 }, (#struct){ 2270 b: (bool){ bool } 2271 }, (#struct){ 2272 c: (bool){ bool } 2273 }) } 2274 } 2275 }) } 2276 }, (#struct){ 2277 c: (#struct){ |((#struct){ 2278 a: (#struct){ 2279 one: (#struct){ |((#struct){ 2280 a: (int){ int } 2281 }, (#struct){ 2282 b: (int){ int } 2283 }, (#struct){ 2284 c: (int){ int } 2285 }) } 2286 two: (#struct){ |((#struct){ 2287 a: (string){ string } 2288 }, (#struct){ 2289 b: (string){ string } 2290 }, (#struct){ 2291 c: (string){ string } 2292 }) } 2293 three: (#struct){ |((#struct){ 2294 a: (bool){ bool } 2295 }, (#struct){ 2296 b: (bool){ bool } 2297 }, (#struct){ 2298 c: (bool){ bool } 2299 }) } 2300 } 2301 }, (#struct){ 2302 b: (#struct){ 2303 one: (#struct){ |((#struct){ 2304 a: (int){ int } 2305 }, (#struct){ 2306 b: (int){ int } 2307 }, (#struct){ 2308 c: (int){ int } 2309 }) } 2310 two: (#struct){ |((#struct){ 2311 a: (string){ string } 2312 }, (#struct){ 2313 b: (string){ string } 2314 }, (#struct){ 2315 c: (string){ string } 2316 }) } 2317 three: (#struct){ |((#struct){ 2318 a: (bool){ bool } 2319 }, (#struct){ 2320 b: (bool){ bool } 2321 }, (#struct){ 2322 c: (bool){ bool } 2323 }) } 2324 } 2325 }, (#struct){ 2326 c: (#struct){ 2327 one: (#struct){ |((#struct){ 2328 a: (int){ int } 2329 }, (#struct){ 2330 b: (int){ int } 2331 }, (#struct){ 2332 c: (int){ int } 2333 }) } 2334 two: (#struct){ |((#struct){ 2335 a: (string){ string } 2336 }, (#struct){ 2337 b: (string){ string } 2338 }, (#struct){ 2339 c: (string){ string } 2340 }) } 2341 three: (#struct){ |((#struct){ 2342 a: (bool){ bool } 2343 }, (#struct){ 2344 b: (bool){ bool } 2345 }, (#struct){ 2346 c: (bool){ bool } 2347 }) } 2348 } 2349 }) } 2350 }) } 2351 }) } 2352 x: (struct){ 2353 empty: (struct){ 2354 } 2355 } 2356 "0": (struct){ 2357 data: (struct){ 2358 } 2359 } 2360 "1": (struct){ 2361 data: (struct){ 2362 } 2363 } 2364 "2": (_|_){ 2365 // [structural cycle] 2366 data: (_|_){ 2367 // [structural cycle] root_2: structural cycle: 2368 // ./in.cue:19:18 2369 } 2370 } 2371 "3": (_|_){ 2372 // [structural cycle] 2373 data: (_|_){ 2374 // [structural cycle] root_2: structural cycle: 2375 // ./in.cue:19:18 2376 } 2377 } 2378 } 2379 let root_0#1 = (_|_){ 2380 // [structural cycle] root_0: structural cycle: 2381 // ./in.cue:17:18 2382 } 2383 let root_1#2 = (_|_){ 2384 // [structural cycle] root_1: structural cycle: 2385 // ./in.cue:18:18 2386 } 2387 root_2: (_|_){ 2388 // [structural cycle] root_2: structural cycle: 2389 // ./in.cue:19:18 2390 } 2391 root_3: (_|_){ 2392 // [structural cycle] 2393 } 2394 } 2395 -- out/compile -- 2396 --- in.cue 2397 { 2398 #D1: ({ 2399 a: 〈1;#D2〉 2400 }|{ 2401 b: 〈1;#D2〉 2402 }|{ 2403 c: 〈1;#D2〉 2404 }) 2405 #D2: ({ 2406 a: 〈1;#D3〉 2407 }|{ 2408 b: 〈1;#D3〉 2409 }|{ 2410 c: 〈1;#D3〉 2411 }) 2412 #D3: { 2413 one: ({ 2414 a: int 2415 }|{ 2416 b: int 2417 }|{ 2418 c: int 2419 }) 2420 two: ({ 2421 a: string 2422 }|{ 2423 b: string 2424 }|{ 2425 c: string 2426 }) 2427 three: ({ 2428 a: bool 2429 }|{ 2430 b: bool 2431 }|{ 2432 c: bool 2433 }) 2434 } 2435 root: { 2436 y: (〈1;#D1〉|[ 2437 〈2;#D1〉, 2438 ]|{ 2439 x: 〈2;#D1〉 2440 }) 2441 } 2442 root: { 2443 x: { 2444 empty: {} 2445 } 2446 } 2447 root: { 2448 "0": { 2449 data: 〈2;let root_0#1〉.x.empty 2450 } 2451 } 2452 root: { 2453 "1": { 2454 data: 〈2;let root_1#2〉.x.empty 2455 } 2456 } 2457 root: { 2458 "2": { 2459 data: 〈2;root_2〉.x.empty 2460 } 2461 } 2462 root: { 2463 "3": { 2464 data: 〈2;root_3〉.x.empty 2465 } 2466 } 2467 let root_0#1 = 〈0;root〉 2468 let root_1#2 = 〈0;root〉 2469 root_2: 〈0;root〉 2470 root_3: 〈0;root〉 2471 }