github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/cue/testdata/cycle/structural.txtar (about) 1 -- in.cue -- 2 a1: { 3 f: [f] 4 } 5 6 a2: { 7 f: f 8 } 9 10 a3: { 11 f: {g: f} 12 } 13 14 a4: { 15 a: [a | int] 16 } 17 18 a5: { 19 a: b: a | int 20 } 21 22 a6: { 23 a: a | int 24 } 25 26 a7: { 27 a: c.x 28 b: { 29 x: c 30 y: "foo" 31 } 32 c: { 33 x: b.y 34 y: 3 35 } 36 } 37 38 b1: { 39 b: a & [1] 40 a: [a | int] 41 } 42 43 b2: { 44 a: [a | int] 45 b: a & [1] 46 } 47 48 b3: { 49 x: a: [a | int] 50 b: x & {a: [1]} 51 } 52 53 b4: { 54 b: x.y & [1] 55 x: y: [y] 56 } 57 58 b5: { 59 b: x.y & {a: [1]} 60 x: y: a: [a | int] 61 } 62 63 b6: { 64 b: x & {a: [1]} 65 x: a: [a] 66 } 67 68 b7: { 69 b: a & [[1]] 70 a: [a] 71 } 72 73 // Issue #555 74 b8: { 75 x: a 76 a: f: b 77 b: a | string 78 } 79 80 // Issue #555 81 b9: { 82 #a: string | #b | #ref 83 #b: { 84 c: [#a, #a, #a] 85 } 86 #ref: ref: string 87 x: #b | #ref 88 } 89 90 // Issue #534 91 b10: { 92 a: close({ 93 b: string | a | c 94 }) 95 c: close({ 96 d: string | a 97 }) 98 } 99 100 // Issue #509 -- with comprehension 101 b11: { 102 #list: { 103 tail: #list | *null 104 if tail != null { 105 } 106 } 107 } 108 109 // Issue #509 -- with comprehension 110 b12: { 111 #list: { 112 V=value: int 113 T=tail: #list | *null 114 if T != null { 115 sum: V + T.sum 116 } 117 if T == null { 118 sum: V 119 } 120 } 121 122 list1: #list 123 list1: { 124 value: 1 125 tail: { 126 value: 2 127 tail: { 128 value: 3 129 tail: { 130 value: 4 131 } 132 } 133 } 134 } 135 } 136 137 // More trigger happy on stack overflows. 138 b12b: { 139 #list: { 140 tail: #list 141 142 if tail != null { 143 sum: tail.sum 144 } 145 } 146 147 list1: #list 148 list1: { 149 tail: { 150 tail: { 151 } 152 } 153 } 154 } 155 156 // Issue #587 157 b13: root: a: [ for x in root {x}] 158 159 // Issue #587 160 b14: { 161 root: { 162 a: [...int] 163 164 for x in a { 165 "\(x)": {} 166 } 167 168 b: [ for x in root {x}] 169 } 170 } 171 172 // This is okay 173 // Issue #587 174 b15: root: a: {for x in root {x}} 175 176 // Issue #502 -- unused bulk constraints are not cyclic 177 p1: { 178 #T: { 179 a: [string]: link: #T 180 } 181 182 a: #T & { 183 a: one: link: a: two: {} 184 } 185 } 186 187 // Issue #502 -- but they are if it is invoked within the struct. 188 p2: { 189 #T: { 190 a: [string]: link: #T 191 a: b: {} 192 } 193 194 a: #T & { 195 a: one: link: a: two: {} 196 } 197 } 198 199 // Issue #502 -- or added later. 200 p3: { 201 #S: #T: { 202 a: [string]: link: #T 203 } 204 205 #U: { 206 #S 207 #T: a: b: {} 208 } 209 210 a: #U.#T & { 211 a: one: link: a: two: {} 212 } 213 } 214 215 // Issue #502 -- unused bulk constraints are not cyclic 216 p4: { 217 #T: { 218 a: [...{link: #T}] 219 } 220 221 a: #T & { 222 a: [{link: a: [{}]}] 223 } 224 } 225 226 // Issue #502 -- but they are if it is invoked within the struct. 227 p5: { 228 #T: { 229 a: [...{link: #T}] 230 a: [{}] 231 } 232 233 a: #T & { 234 a: [{link: a: [{}]}] 235 } 236 } 237 238 // Issue #502 -- or added later. 239 p6: { 240 #S: #T: { 241 a: [...{link: #T}] 242 } 243 244 #U: { 245 #S 246 #T: a: [{}] 247 } 248 249 a: #U.#T & { 250 a: [{link: a: [{}]}] 251 } 252 } 253 254 c1: { 255 a: { 256 b: {} 257 c: a & b 258 } 259 } 260 261 // indirection 262 d1: { 263 a: b: c: d: {h: int, t: r} 264 r: a.b 265 266 x: a.b.c 267 } 268 269 d2: { 270 x: a.b.c 271 272 r: a.b 273 a: b: c: d: {h: int, t: r} 274 } 275 276 d3: { 277 config: { 278 a: b: c: indirect 279 indirect: [a.b, null][i] 280 i: int | *1 281 } 282 x: config & {i: 0} 283 } 284 285 // combining structural with reference cycles 286 e1: { 287 a: a 288 a: c: a 289 290 b: c: b 291 b: b 292 } 293 294 e2: { 295 a: {a} 296 a: c: a 297 298 b: c: b 299 b: {b} 300 } 301 302 e3: { 303 a: [a] 304 a: c: a 305 306 b: [b] 307 b: c: b 308 } 309 310 e4: { 311 a: [a | {}] 312 a: [[{c: 1}]] 313 314 b: [[{c: 1}]] 315 b: [b | {}] 316 } 317 318 e5: { 319 a: c: a | int 320 a: a | int 321 322 b: b | int 323 b: c: b | int 324 } 325 326 // validating values 327 nestedList: { 328 v1e: { 329 x: [x | int, 1] 330 y: x & [[[2], 1], 1] 331 } 332 333 v2e: { 334 y: x & [[[2], 1], 1] 335 x: [x | int, 1] 336 } 337 338 v1: { 339 x: [x | int, 1] 340 y: x & [[[2, 1], 1], 1] 341 } 342 343 v2: { 344 y: x & [[[2, 1], 1], 1] 345 x: [x | int, 1] 346 } 347 } 348 349 v3: { 350 list: { 351 head: int 352 tail: list | null 353 } 354 355 myList: list 356 myList: { 357 head: 2 358 tail: { 359 head: 3 360 tail: { 361 head: 4 362 } 363 } 364 } 365 } 366 367 v4: { 368 list: { 369 head: int 370 tail: list | 1 371 } 372 373 myList: list 374 myList: { 375 head: 2 376 tail: head: 3 377 } 378 } 379 380 v5: { 381 list: { 382 head: int 383 tail: list | {} 384 } 385 386 myList: list 387 myList: { 388 head: 2 389 tail: head: 3 390 } 391 } 392 393 // Example from "The Logic of Type Feature Structures" (Bob Carpenter)/ 394 z1: { 395 y: { 396 f: h: g 397 g: _ 398 } 399 x: { 400 f: _ 401 g: f 402 } 403 z: x & y 404 } 405 406 // Ensure these are NOT treated as structural errors. 407 408 n1: a: b: int 409 n2: n1 & {a: n1} 410 n3: n1 & {n1} 411 n4: n1 & {x: n1 & {y: n1 & {z: int}}} 412 -- out/eval -- 413 Errors: 414 a1.f.0: structural cycle 415 a3.f.g: structural cycle 416 b12b.#list.tail.tail: structural cycle 417 b13.root.a.0.0: structural cycle 418 b14.root.b.1.1: structural cycle 419 b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 420 ./in.cue:53:5 421 ./in.cue:53:12 422 ./in.cue:54:8 423 ./in.cue:54:9 424 b4.b.0.0: structural cycle 425 b4.x.y.0: structural cycle 426 b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 427 ./in.cue:63:5 428 ./in.cue:63:13 429 ./in.cue:63:14 430 ./in.cue:64:9 431 b6.b.a.0.0: conflicting values 1 and [1] (mismatched types int and list): 432 ./in.cue:63:5 433 ./in.cue:63:13 434 ./in.cue:63:14 435 ./in.cue:64:9 436 b6.b.a.0.0: structural cycle 437 b6.x.a.0: structural cycle 438 b7.a.0: structural cycle 439 b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 440 ./in.cue:68:5 441 ./in.cue:68:11 442 ./in.cue:69:5 443 ./in.cue:69:6 444 b7.b.0.0.0: structural cycle 445 c1.a.c.c: structural cycle 446 d1.a.b.c.d.t: structural cycle 447 d1.r: structural cycle 448 d2.r.c.d.t: structural cycle 449 d2.x.d.t.c.d.t: structural cycle 450 e1.a.c: structural cycle 451 e1.b.c: structural cycle 452 e2.a.c: structural cycle 453 e2.b.c: structural cycle 454 e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 455 ./in.cue:302:5 456 ./in.cue:303:5 457 e3.a.0: conflicting values [a] and {c:a} (mismatched types list and struct): 458 ./in.cue:302:5 459 ./in.cue:302:6 460 ./in.cue:303:5 461 e3.a.0: structural cycle 462 e3.a.c: conflicting values [a] and {c:a} (mismatched types list and struct): 463 ./in.cue:302:5 464 ./in.cue:303:5 465 ./in.cue:303:8 466 e3.a.c: structural cycle 467 e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 468 ./in.cue:305:5 469 ./in.cue:306:5 470 e3.b.0: conflicting values [b] and {c:b} (mismatched types list and struct): 471 ./in.cue:305:5 472 ./in.cue:305:6 473 ./in.cue:306:5 474 e3.b.0: structural cycle 475 e3.b.c: conflicting values [b] and {c:b} (mismatched types list and struct): 476 ./in.cue:305:5 477 ./in.cue:306:5 478 ./in.cue:306:8 479 e3.b.c: structural cycle 480 e4.a.0: 4 errors in empty disjunction: 481 e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 482 ./in.cue:310:10 483 ./in.cue:311:6 484 e4.a.0.0: 2 errors in empty disjunction: 485 e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 486 ./in.cue:311:5 487 ./in.cue:311:7 488 e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 489 ./in.cue:310:6 490 ./in.cue:310:10 491 ./in.cue:311:6 492 e4.b.0: 4 errors in empty disjunction: 493 e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 494 ./in.cue:313:6 495 ./in.cue:314:10 496 e4.b.0.0: 2 errors in empty disjunction: 497 e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 498 ./in.cue:313:7 499 ./in.cue:314:5 500 e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 501 ./in.cue:313:6 502 ./in.cue:314:6 503 ./in.cue:314:10 504 nestedList.v1e.y.0: 4 errors in empty disjunction: 505 nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 506 ./in.cue:328:11 507 ./in.cue:329:11 508 nestedList.v1e.y.0.0: 2 errors in empty disjunction: 509 nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 510 ./in.cue:328:11 511 ./in.cue:329:12 512 nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 513 nestedList.v2e.y.0: 4 errors in empty disjunction: 514 nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 515 ./in.cue:333:11 516 ./in.cue:334:11 517 nestedList.v2e.y.0.0: 2 errors in empty disjunction: 518 nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 519 ./in.cue:333:12 520 ./in.cue:334:11 521 nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 522 p2.#T.a.b.link: structural cycle 523 p3.#U.#T.a.b.link: structural cycle 524 p5.#T.a.0.link: structural cycle 525 p6.#U.#T.a.0.link: structural cycle 526 z1.z.f.h.h: structural cycle 527 z1.z.g.h: structural cycle 528 cycle error: 529 ./in.cue:141:6 530 d3.config.0: structural cycle: 531 ./in.cue:278:13 532 533 Result: 534 (_|_){ 535 // [eval] 536 a1: (_|_){ 537 // [structural cycle] 538 f: (_|_){ 539 // [structural cycle] 540 0: (_|_){ 541 // [structural cycle] a1.f.0: structural cycle 542 } 543 } 544 } 545 a2: (struct){ 546 f: (_){ _ } 547 } 548 a3: (_|_){ 549 // [structural cycle] 550 f: (_|_){ 551 // [structural cycle] 552 g: (_|_){ 553 // [structural cycle] a3.f.g: structural cycle 554 } 555 } 556 } 557 a4: (struct){ 558 a: (#list){ 559 0: (int){ int } 560 } 561 } 562 a5: (struct){ 563 a: (struct){ 564 b: (int){ int } 565 } 566 } 567 a6: (struct){ 568 a: (_){ |((_){ _ }, (int){ int }) } 569 } 570 a7: (struct){ 571 a: (string){ "foo" } 572 b: (struct){ 573 x: (struct){ 574 x: (string){ "foo" } 575 y: (int){ 3 } 576 } 577 y: (string){ "foo" } 578 } 579 c: (struct){ 580 x: (string){ "foo" } 581 y: (int){ 3 } 582 } 583 } 584 b1: (struct){ 585 b: (#list){ 586 0: (int){ 1 } 587 } 588 a: (#list){ 589 0: (int){ int } 590 } 591 } 592 b2: (struct){ 593 a: (#list){ 594 0: (int){ int } 595 } 596 b: (#list){ 597 0: (int){ 1 } 598 } 599 } 600 b3: (struct){ 601 x: (struct){ 602 a: (#list){ 603 0: (int){ int } 604 } 605 } 606 b: (struct){ 607 a: (#list){ 608 0: (int){ 1 } 609 } 610 } 611 } 612 b4: (_|_){ 613 // [eval] 614 b: (_|_){ 615 // [eval] 616 0: (_|_){ 617 // [eval] b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 618 // ./in.cue:53:5 619 // ./in.cue:53:12 620 // ./in.cue:54:8 621 // ./in.cue:54:9 622 0: (_|_){ 623 // [structural cycle] b4.b.0.0: structural cycle 624 } 625 } 626 } 627 x: (_|_){ 628 // [structural cycle] 629 y: (_|_){ 630 // [structural cycle] 631 0: (_|_){ 632 // [structural cycle] b4.x.y.0: structural cycle 633 } 634 } 635 } 636 } 637 b5: (struct){ 638 b: (struct){ 639 a: (#list){ 640 0: (int){ 1 } 641 } 642 } 643 x: (struct){ 644 y: (struct){ 645 a: (#list){ 646 0: (int){ int } 647 } 648 } 649 } 650 } 651 b6: (_|_){ 652 // [eval] 653 b: (_|_){ 654 // [eval] 655 a: (_|_){ 656 // [eval] 657 0: (_|_){ 658 // [eval] b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 659 // ./in.cue:63:5 660 // ./in.cue:63:13 661 // ./in.cue:63:14 662 // ./in.cue:64:9 663 0: (_|_){ 664 // [eval] b6.b.a.0.0: conflicting values 1 and [1] (mismatched types int and list): 665 // ./in.cue:63:5 666 // ./in.cue:63:13 667 // ./in.cue:63:14 668 // ./in.cue:64:9 669 // b6.b.a.0.0: structural cycle 670 } 671 } 672 } 673 } 674 x: (_|_){ 675 // [structural cycle] 676 a: (_|_){ 677 // [structural cycle] 678 0: (_|_){ 679 // [structural cycle] b6.x.a.0: structural cycle 680 } 681 } 682 } 683 } 684 b7: (_|_){ 685 // [eval] 686 b: (_|_){ 687 // [eval] 688 0: (_|_){ 689 // [eval] 690 0: (_|_){ 691 // [eval] b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 692 // ./in.cue:68:5 693 // ./in.cue:68:11 694 // ./in.cue:69:5 695 // ./in.cue:69:6 696 0: (_|_){ 697 // [structural cycle] b7.b.0.0.0: structural cycle 698 } 699 } 700 } 701 } 702 a: (_|_){ 703 // [structural cycle] 704 0: (_|_){ 705 // [structural cycle] b7.a.0: structural cycle 706 } 707 } 708 } 709 b8: (struct){ 710 x: (struct){ 711 f: (string){ string } 712 } 713 a: (struct){ 714 f: (string){ string } 715 } 716 b: (string){ string } 717 } 718 b9: (struct){ 719 #a: ((string|struct)){ |((string){ string }, (#struct){ 720 ref: (string){ string } 721 }) } 722 #b: (#struct){ 723 c: (#list){ 724 0: ((string|struct)){ |((string){ string }, (#struct){ 725 ref: (string){ string } 726 }) } 727 1: ((string|struct)){ |((string){ string }, (#struct){ 728 ref: (string){ string } 729 }) } 730 2: ((string|struct)){ |((string){ string }, (#struct){ 731 ref: (string){ string } 732 }) } 733 } 734 } 735 #ref: (#struct){ 736 ref: (string){ string } 737 } 738 x: (#struct){ |((#struct){ 739 c: (#list){ 740 0: ((string|struct)){ |((string){ string }, (#struct){ 741 ref: (string){ string } 742 }) } 743 1: ((string|struct)){ |((string){ string }, (#struct){ 744 ref: (string){ string } 745 }) } 746 2: ((string|struct)){ |((string){ string }, (#struct){ 747 ref: (string){ string } 748 }) } 749 } 750 }, (#struct){ 751 ref: (string){ string } 752 }) } 753 } 754 b10: (struct){ 755 a: (#struct){ 756 b: ((string|struct)){ |((string){ string }, (#struct){ 757 d: (string){ string } 758 }) } 759 } 760 c: (#struct){ 761 d: ((string|struct)){ |((string){ string }, (#struct){ 762 b: (string){ string } 763 }) } 764 } 765 } 766 b11: (struct){ 767 #list: (#struct){ 768 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 769 tail: (null){ null } 770 }) } 771 } 772 } 773 b12: (struct){ 774 #list: (#struct){ 775 value: (int){ int } 776 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 777 value: (int){ int } 778 tail: (null){ null } 779 sum: (int){ int } 780 }) } 781 sum: (int){ int } 782 } 783 list1: (#struct){ 784 value: (int){ 1 } 785 tail: (#struct){ 786 value: (int){ 2 } 787 tail: (#struct){ 788 value: (int){ 3 } 789 tail: (#struct){ 790 value: (int){ 4 } 791 tail: (null){ null } 792 sum: (int){ 4 } 793 } 794 sum: (int){ 7 } 795 } 796 sum: (int){ 9 } 797 } 798 sum: (int){ 10 } 799 } 800 } 801 b12b: (_|_){ 802 // [structural cycle] 803 #list: (_|_){ 804 // [structural cycle] cycle error: 805 // ./in.cue:141:6 806 tail: (_|_){ 807 // [structural cycle] cycle error: 808 // ./in.cue:141:6 809 tail: (_|_){ 810 // [structural cycle] b12b.#list.tail.tail: structural cycle 811 } 812 } 813 } 814 list1: (_|_){ 815 // [structural cycle] cycle error: 816 // ./in.cue:141:6 817 tail: (struct){ 818 tail: (struct){ 819 } 820 } 821 } 822 } 823 b13: (_|_){ 824 // [structural cycle] 825 root: (_|_){ 826 // [structural cycle] 827 a: (_|_){ 828 // [structural cycle] 829 0: (_|_){ 830 // [structural cycle] 831 0: (_|_){ 832 // [structural cycle] b13.root.a.0.0: structural cycle 833 } 834 } 835 } 836 } 837 } 838 b14: (_|_){ 839 // [structural cycle] 840 root: (_|_){ 841 // [structural cycle] 842 a: (list){ 843 } 844 b: (_|_){ 845 // [structural cycle] 846 0: (list){ 847 } 848 1: (_|_){ 849 // [structural cycle] 850 0: (list){ 851 } 852 1: (_|_){ 853 // [structural cycle] b14.root.b.1.1: structural cycle 854 } 855 } 856 } 857 } 858 } 859 b15: (struct){ 860 root: (struct){ 861 a: (struct){ 862 } 863 } 864 } 865 p1: (struct){ 866 #T: (#struct){ 867 a: (#struct){ 868 } 869 } 870 a: (#struct){ 871 a: (#struct){ 872 one: (#struct){ 873 link: (#struct){ 874 a: (#struct){ 875 two: (#struct){ 876 link: (#struct){ 877 a: (#struct){ 878 } 879 } 880 } 881 } 882 } 883 } 884 } 885 } 886 } 887 p2: (_|_){ 888 // [structural cycle] 889 #T: (_|_){ 890 // [structural cycle] 891 a: (_|_){ 892 // [structural cycle] 893 b: (_|_){ 894 // [structural cycle] 895 link: (_|_){ 896 // [structural cycle] p2.#T.a.b.link: structural cycle 897 } 898 } 899 } 900 } 901 a: (_|_){ 902 // [structural cycle] 903 a: (struct){ 904 one: (struct){ 905 link: (struct){ 906 a: (struct){ 907 two: (struct){ 908 } 909 } 910 } 911 } 912 } 913 } 914 } 915 p3: (_|_){ 916 // [structural cycle] 917 #S: (#struct){ 918 #T: (#struct){ 919 a: (#struct){ 920 } 921 } 922 } 923 #U: (_|_){ 924 // [structural cycle] 925 #T: (_|_){ 926 // [structural cycle] 927 a: (_|_){ 928 // [structural cycle] 929 b: (_|_){ 930 // [structural cycle] 931 link: (_|_){ 932 // [structural cycle] p3.#U.#T.a.b.link: structural cycle 933 } 934 } 935 } 936 } 937 } 938 a: (_|_){ 939 // [structural cycle] p3.#U.#T.a.b.link: structural cycle 940 a: (struct){ 941 one: (struct){ 942 link: (struct){ 943 a: (struct){ 944 two: (struct){ 945 } 946 } 947 } 948 } 949 } 950 } 951 } 952 p4: (struct){ 953 #T: (#struct){ 954 a: (list){ 955 } 956 } 957 a: (#struct){ 958 a: (#list){ 959 0: (#struct){ 960 link: (#struct){ 961 a: (#list){ 962 0: (#struct){ 963 link: (#struct){ 964 a: (list){ 965 } 966 } 967 } 968 } 969 } 970 } 971 } 972 } 973 } 974 p5: (_|_){ 975 // [structural cycle] 976 #T: (_|_){ 977 // [structural cycle] 978 a: (_|_){ 979 // [structural cycle] 980 0: (_|_){ 981 // [structural cycle] 982 link: (_|_){ 983 // [structural cycle] p5.#T.a.0.link: structural cycle 984 } 985 } 986 } 987 } 988 a: (_|_){ 989 // [structural cycle] 990 a: (#list){ 991 0: (struct){ 992 link: (struct){ 993 a: (#list){ 994 0: (struct){ 995 } 996 } 997 } 998 } 999 } 1000 } 1001 } 1002 p6: (_|_){ 1003 // [structural cycle] 1004 #S: (#struct){ 1005 #T: (#struct){ 1006 a: (list){ 1007 } 1008 } 1009 } 1010 #U: (_|_){ 1011 // [structural cycle] 1012 #T: (_|_){ 1013 // [structural cycle] 1014 a: (_|_){ 1015 // [structural cycle] 1016 0: (_|_){ 1017 // [structural cycle] 1018 link: (_|_){ 1019 // [structural cycle] p6.#U.#T.a.0.link: structural cycle 1020 } 1021 } 1022 } 1023 } 1024 } 1025 a: (_|_){ 1026 // [structural cycle] p6.#U.#T.a.0.link: structural cycle 1027 a: (#list){ 1028 0: (struct){ 1029 link: (struct){ 1030 a: (#list){ 1031 0: (struct){ 1032 } 1033 } 1034 } 1035 } 1036 } 1037 } 1038 } 1039 c1: (_|_){ 1040 // [structural cycle] 1041 a: (_|_){ 1042 // [structural cycle] 1043 b: (struct){ 1044 } 1045 c: (_|_){ 1046 // [structural cycle] 1047 b: (struct){ 1048 } 1049 c: (_|_){ 1050 // [structural cycle] c1.a.c.c: structural cycle 1051 } 1052 } 1053 } 1054 } 1055 d1: (_|_){ 1056 // [structural cycle] 1057 a: (_|_){ 1058 // [structural cycle] 1059 b: (_|_){ 1060 // [structural cycle] 1061 c: (_|_){ 1062 // [structural cycle] 1063 d: (_|_){ 1064 // [structural cycle] 1065 h: (int){ int } 1066 t: (_|_){ 1067 // [structural cycle] d1.a.b.c.d.t: structural cycle 1068 } 1069 } 1070 } 1071 } 1072 } 1073 r: (_|_){ 1074 // [structural cycle] d1.r: structural cycle 1075 } 1076 x: (_|_){ 1077 // [structural cycle] d1.a.b.c.d.t: structural cycle 1078 } 1079 } 1080 d2: (_|_){ 1081 // [structural cycle] 1082 x: (_|_){ 1083 // [structural cycle] 1084 d: (_|_){ 1085 // [structural cycle] 1086 h: (int){ int } 1087 t: (_|_){ 1088 // [structural cycle] 1089 c: (_|_){ 1090 // [structural cycle] 1091 d: (_|_){ 1092 // [structural cycle] 1093 h: (int){ int } 1094 t: (_|_){ 1095 // [structural cycle] d2.x.d.t.c.d.t: structural cycle 1096 } 1097 } 1098 } 1099 } 1100 } 1101 } 1102 r: (_|_){ 1103 // [structural cycle] 1104 c: (_|_){ 1105 // [structural cycle] 1106 d: (_|_){ 1107 // [structural cycle] 1108 h: (int){ int } 1109 t: (_|_){ 1110 // [structural cycle] d2.r.c.d.t: structural cycle 1111 } 1112 } 1113 } 1114 } 1115 a: (_|_){ 1116 // [structural cycle] 1117 b: (_|_){ 1118 // [structural cycle] 1119 c: (_|_){ 1120 // [structural cycle] 1121 d: (_|_){ 1122 // [structural cycle] 1123 h: (int){ int } 1124 t: (_|_){ 1125 // [structural cycle] 1126 } 1127 } 1128 } 1129 } 1130 } 1131 } 1132 d3: (_|_){ 1133 // [structural cycle] 1134 config: (_|_){ 1135 // [structural cycle] 1136 a: (_|_){ 1137 // [structural cycle] 1138 b: (_|_){ 1139 // [structural cycle] 1140 c: (_|_){ 1141 // [structural cycle] d3.config.0: structural cycle: 1142 // ./in.cue:278:13 1143 } 1144 } 1145 } 1146 indirect: (_|_){ 1147 // [structural cycle] d3.config.0: structural cycle: 1148 // ./in.cue:278:13 1149 } 1150 i: (int){ |(*(int){ 1 }, (int){ int }) } 1151 } 1152 x: (_|_){ 1153 // [structural cycle] d3.config.0: structural cycle: 1154 // ./in.cue:278:13 1155 i: (int){ 0 } 1156 } 1157 } 1158 e1: (_|_){ 1159 // [structural cycle] 1160 a: (_|_){ 1161 // [structural cycle] 1162 c: (_|_){ 1163 // [structural cycle] e1.a.c: structural cycle 1164 } 1165 } 1166 b: (_|_){ 1167 // [structural cycle] 1168 c: (_|_){ 1169 // [structural cycle] e1.b.c: structural cycle 1170 } 1171 } 1172 } 1173 e2: (_|_){ 1174 // [structural cycle] 1175 a: (_|_){ 1176 // [structural cycle] 1177 c: (_|_){ 1178 // [structural cycle] e2.a.c: structural cycle 1179 } 1180 } 1181 b: (_|_){ 1182 // [structural cycle] 1183 c: (_|_){ 1184 // [structural cycle] e2.b.c: structural cycle 1185 } 1186 } 1187 } 1188 e3: (_|_){ 1189 // [eval] 1190 a: (_|_){ 1191 // [eval] e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 1192 // ./in.cue:302:5 1193 // ./in.cue:303:5 1194 c: (_|_){ 1195 // [eval] e3.a.c: conflicting values [a] and {c:a} (mismatched types list and struct): 1196 // ./in.cue:302:5 1197 // ./in.cue:303:5 1198 // ./in.cue:303:8 1199 // e3.a.c: structural cycle 1200 } 1201 0: (_|_){ 1202 // [eval] e3.a.0: conflicting values [a] and {c:a} (mismatched types list and struct): 1203 // ./in.cue:302:5 1204 // ./in.cue:302:6 1205 // ./in.cue:303:5 1206 // e3.a.0: structural cycle 1207 } 1208 } 1209 b: (_|_){ 1210 // [eval] e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 1211 // ./in.cue:305:5 1212 // ./in.cue:306:5 1213 c: (_|_){ 1214 // [eval] e3.b.c: conflicting values [b] and {c:b} (mismatched types list and struct): 1215 // ./in.cue:305:5 1216 // ./in.cue:306:5 1217 // ./in.cue:306:8 1218 // e3.b.c: structural cycle 1219 } 1220 0: (_|_){ 1221 // [eval] e3.b.0: conflicting values [b] and {c:b} (mismatched types list and struct): 1222 // ./in.cue:305:5 1223 // ./in.cue:305:6 1224 // ./in.cue:306:5 1225 // e3.b.0: structural cycle 1226 } 1227 } 1228 } 1229 e4: (_|_){ 1230 // [eval] 1231 a: (_|_){ 1232 // [eval] 1233 0: (_|_){ 1234 // [eval] e4.a.0: 4 errors in empty disjunction: 1235 // e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1236 // ./in.cue:310:10 1237 // ./in.cue:311:6 1238 // e4.a.0.0: 2 errors in empty disjunction: 1239 // e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 1240 // ./in.cue:311:5 1241 // ./in.cue:311:7 1242 // e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1243 // ./in.cue:310:6 1244 // ./in.cue:310:10 1245 // ./in.cue:311:6 1246 0: (struct){ 1247 c: (int){ 1 } 1248 } 1249 } 1250 } 1251 b: (_|_){ 1252 // [eval] 1253 0: (_|_){ 1254 // [eval] e4.b.0: 4 errors in empty disjunction: 1255 // e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1256 // ./in.cue:313:6 1257 // ./in.cue:314:10 1258 // e4.b.0.0: 2 errors in empty disjunction: 1259 // e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 1260 // ./in.cue:313:7 1261 // ./in.cue:314:5 1262 // e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1263 // ./in.cue:313:6 1264 // ./in.cue:314:6 1265 // ./in.cue:314:10 1266 0: (struct){ 1267 c: (int){ 1 } 1268 } 1269 } 1270 } 1271 } 1272 e5: (struct){ 1273 a: (struct){ 1274 c: (int){ int } 1275 } 1276 b: (struct){ 1277 c: (int){ int } 1278 } 1279 } 1280 nestedList: (_|_){ 1281 // [eval] 1282 v1e: (_|_){ 1283 // [eval] 1284 x: (#list){ 1285 0: (int){ int } 1286 1: (int){ 1 } 1287 } 1288 y: (_|_){ 1289 // [eval] 1290 0: (_|_){ 1291 // [eval] nestedList.v1e.y.0: 4 errors in empty disjunction: 1292 // nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1293 // ./in.cue:328:11 1294 // ./in.cue:329:11 1295 // nestedList.v1e.y.0.0: 2 errors in empty disjunction: 1296 // nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1297 // ./in.cue:328:11 1298 // ./in.cue:329:12 1299 // nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 1300 0: (#list){ 1301 0: (int){ 2 } 1302 } 1303 1: (int){ 1 } 1304 } 1305 1: (int){ 1 } 1306 } 1307 } 1308 v2e: (_|_){ 1309 // [eval] 1310 y: (_|_){ 1311 // [eval] 1312 0: (_|_){ 1313 // [eval] nestedList.v2e.y.0: 4 errors in empty disjunction: 1314 // nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1315 // ./in.cue:333:11 1316 // ./in.cue:334:11 1317 // nestedList.v2e.y.0.0: 2 errors in empty disjunction: 1318 // nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1319 // ./in.cue:333:12 1320 // ./in.cue:334:11 1321 // nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 1322 0: (#list){ 1323 0: (int){ 2 } 1324 } 1325 1: (int){ 1 } 1326 } 1327 1: (int){ 1 } 1328 } 1329 x: (#list){ 1330 0: (int){ int } 1331 1: (int){ 1 } 1332 } 1333 } 1334 v1: (struct){ 1335 x: (#list){ 1336 0: (int){ int } 1337 1: (int){ 1 } 1338 } 1339 y: (#list){ 1340 0: (#list){ 1341 0: (#list){ 1342 0: (int){ 2 } 1343 1: (int){ 1 } 1344 } 1345 1: (int){ 1 } 1346 } 1347 1: (int){ 1 } 1348 } 1349 } 1350 v2: (struct){ 1351 y: (#list){ 1352 0: (#list){ 1353 0: (#list){ 1354 0: (int){ 2 } 1355 1: (int){ 1 } 1356 } 1357 1: (int){ 1 } 1358 } 1359 1: (int){ 1 } 1360 } 1361 x: (#list){ 1362 0: (int){ int } 1363 1: (int){ 1 } 1364 } 1365 } 1366 } 1367 v3: (struct){ 1368 list: (struct){ 1369 head: (int){ int } 1370 tail: (null){ null } 1371 } 1372 myList: (struct){ 1373 head: (int){ 2 } 1374 tail: (struct){ 1375 head: (int){ 3 } 1376 tail: (struct){ 1377 head: (int){ 4 } 1378 tail: (null){ null } 1379 } 1380 } 1381 } 1382 } 1383 v4: (struct){ 1384 list: (struct){ 1385 head: (int){ int } 1386 tail: (int){ 1 } 1387 } 1388 myList: (struct){ 1389 head: (int){ 2 } 1390 tail: (struct){ 1391 head: (int){ 3 } 1392 tail: (int){ 1 } 1393 } 1394 } 1395 } 1396 v5: (struct){ 1397 list: (struct){ 1398 head: (int){ int } 1399 tail: (struct){ 1400 } 1401 } 1402 myList: (struct){ 1403 head: (int){ 2 } 1404 tail: (struct){ |((struct){ 1405 head: (int){ 3 } 1406 tail: (struct){ 1407 } 1408 }, (struct){ 1409 head: (int){ 3 } 1410 }) } 1411 } 1412 } 1413 z1: (_|_){ 1414 // [structural cycle] 1415 y: (struct){ 1416 f: (struct){ 1417 h: (_){ _ } 1418 } 1419 g: (_){ _ } 1420 } 1421 x: (struct){ 1422 f: (_){ _ } 1423 g: (_){ _ } 1424 } 1425 z: (_|_){ 1426 // [structural cycle] 1427 f: (_|_){ 1428 // [structural cycle] 1429 h: (_|_){ 1430 // [structural cycle] 1431 h: (_|_){ 1432 // [structural cycle] z1.z.f.h.h: structural cycle 1433 } 1434 } 1435 } 1436 g: (_|_){ 1437 // [structural cycle] 1438 h: (_|_){ 1439 // [structural cycle] z1.z.g.h: structural cycle 1440 } 1441 } 1442 } 1443 } 1444 n1: (struct){ 1445 a: (struct){ 1446 b: (int){ int } 1447 } 1448 } 1449 n2: (struct){ 1450 a: (struct){ 1451 b: (int){ int } 1452 a: (struct){ 1453 b: (int){ int } 1454 } 1455 } 1456 } 1457 n3: (struct){ 1458 a: (struct){ 1459 b: (int){ int } 1460 } 1461 } 1462 n4: (struct){ 1463 a: (struct){ 1464 b: (int){ int } 1465 } 1466 x: (struct){ 1467 a: (struct){ 1468 b: (int){ int } 1469 } 1470 y: (struct){ 1471 a: (struct){ 1472 b: (int){ int } 1473 } 1474 z: (int){ int } 1475 } 1476 } 1477 } 1478 } 1479 -- out/compile -- 1480 --- in.cue 1481 { 1482 a1: { 1483 f: [ 1484 〈1;f〉, 1485 ] 1486 } 1487 a2: { 1488 f: 〈0;f〉 1489 } 1490 a3: { 1491 f: { 1492 g: 〈1;f〉 1493 } 1494 } 1495 a4: { 1496 a: [ 1497 (〈1;a〉|int), 1498 ] 1499 } 1500 a5: { 1501 a: { 1502 b: (〈1;a〉|int) 1503 } 1504 } 1505 a6: { 1506 a: (〈0;a〉|int) 1507 } 1508 a7: { 1509 a: 〈0;c〉.x 1510 b: { 1511 x: 〈1;c〉 1512 y: "foo" 1513 } 1514 c: { 1515 x: 〈1;b〉.y 1516 y: 3 1517 } 1518 } 1519 b1: { 1520 b: (〈0;a〉 & [ 1521 1, 1522 ]) 1523 a: [ 1524 (〈1;a〉|int), 1525 ] 1526 } 1527 b2: { 1528 a: [ 1529 (〈1;a〉|int), 1530 ] 1531 b: (〈0;a〉 & [ 1532 1, 1533 ]) 1534 } 1535 b3: { 1536 x: { 1537 a: [ 1538 (〈1;a〉|int), 1539 ] 1540 } 1541 b: (〈0;x〉 & { 1542 a: [ 1543 1, 1544 ] 1545 }) 1546 } 1547 b4: { 1548 b: (〈0;x〉.y & [ 1549 1, 1550 ]) 1551 x: { 1552 y: [ 1553 〈1;y〉, 1554 ] 1555 } 1556 } 1557 b5: { 1558 b: (〈0;x〉.y & { 1559 a: [ 1560 1, 1561 ] 1562 }) 1563 x: { 1564 y: { 1565 a: [ 1566 (〈1;a〉|int), 1567 ] 1568 } 1569 } 1570 } 1571 b6: { 1572 b: (〈0;x〉 & { 1573 a: [ 1574 1, 1575 ] 1576 }) 1577 x: { 1578 a: [ 1579 〈1;a〉, 1580 ] 1581 } 1582 } 1583 b7: { 1584 b: (〈0;a〉 & [ 1585 [ 1586 1, 1587 ], 1588 ]) 1589 a: [ 1590 〈1;a〉, 1591 ] 1592 } 1593 b8: { 1594 x: 〈0;a〉 1595 a: { 1596 f: 〈1;b〉 1597 } 1598 b: (〈0;a〉|string) 1599 } 1600 b9: { 1601 #a: (string|〈0;#b〉|〈0;#ref〉) 1602 #b: { 1603 c: [ 1604 〈2;#a〉, 1605 〈2;#a〉, 1606 〈2;#a〉, 1607 ] 1608 } 1609 #ref: { 1610 ref: string 1611 } 1612 x: (〈0;#b〉|〈0;#ref〉) 1613 } 1614 b10: { 1615 a: close({ 1616 b: (string|〈1;a〉|〈1;c〉) 1617 }) 1618 c: close({ 1619 d: (string|〈1;a〉) 1620 }) 1621 } 1622 b11: { 1623 #list: { 1624 tail: (〈1;#list〉|*null) 1625 if (〈0;tail〉 != null) {} 1626 } 1627 } 1628 b12: { 1629 #list: { 1630 value: int 1631 tail: (〈1;#list〉|*null) 1632 if (〈0;tail〉 != null) { 1633 sum: (〈1;value〉 + 〈1;tail〉.sum) 1634 } 1635 if (〈0;tail〉 == null) { 1636 sum: 〈1;value〉 1637 } 1638 } 1639 list1: 〈0;#list〉 1640 list1: { 1641 value: 1 1642 tail: { 1643 value: 2 1644 tail: { 1645 value: 3 1646 tail: { 1647 value: 4 1648 } 1649 } 1650 } 1651 } 1652 } 1653 b12b: { 1654 #list: { 1655 tail: 〈1;#list〉 1656 if (〈0;tail〉 != null) { 1657 sum: 〈1;tail〉.sum 1658 } 1659 } 1660 list1: 〈0;#list〉 1661 list1: { 1662 tail: { 1663 tail: {} 1664 } 1665 } 1666 } 1667 b13: { 1668 root: { 1669 a: [ 1670 for _, x in 〈2;root〉 { 1671 〈1;x〉 1672 }, 1673 ] 1674 } 1675 } 1676 b14: { 1677 root: { 1678 a: [ 1679 ...int, 1680 ] 1681 for _, x in 〈0;a〉 { 1682 "\(〈1;x〉)": {} 1683 } 1684 b: [ 1685 for _, x in 〈2;root〉 { 1686 〈1;x〉 1687 }, 1688 ] 1689 } 1690 } 1691 b15: { 1692 root: { 1693 a: { 1694 for _, x in 〈2;root〉 { 1695 〈1;x〉 1696 } 1697 } 1698 } 1699 } 1700 p1: { 1701 #T: { 1702 a: { 1703 [string]: { 1704 link: 〈3;#T〉 1705 } 1706 } 1707 } 1708 a: (〈0;#T〉 & { 1709 a: { 1710 one: { 1711 link: { 1712 a: { 1713 two: {} 1714 } 1715 } 1716 } 1717 } 1718 }) 1719 } 1720 p2: { 1721 #T: { 1722 a: { 1723 [string]: { 1724 link: 〈3;#T〉 1725 } 1726 } 1727 a: { 1728 b: {} 1729 } 1730 } 1731 a: (〈0;#T〉 & { 1732 a: { 1733 one: { 1734 link: { 1735 a: { 1736 two: {} 1737 } 1738 } 1739 } 1740 } 1741 }) 1742 } 1743 p3: { 1744 #S: { 1745 #T: { 1746 a: { 1747 [string]: { 1748 link: 〈3;#T〉 1749 } 1750 } 1751 } 1752 } 1753 #U: { 1754 〈1;#S〉 1755 #T: { 1756 a: { 1757 b: {} 1758 } 1759 } 1760 } 1761 a: (〈0;#U〉.#T & { 1762 a: { 1763 one: { 1764 link: { 1765 a: { 1766 two: {} 1767 } 1768 } 1769 } 1770 } 1771 }) 1772 } 1773 p4: { 1774 #T: { 1775 a: [ 1776 ...{ 1777 link: 〈3;#T〉 1778 }, 1779 ] 1780 } 1781 a: (〈0;#T〉 & { 1782 a: [ 1783 { 1784 link: { 1785 a: [ 1786 {}, 1787 ] 1788 } 1789 }, 1790 ] 1791 }) 1792 } 1793 p5: { 1794 #T: { 1795 a: [ 1796 ...{ 1797 link: 〈3;#T〉 1798 }, 1799 ] 1800 a: [ 1801 {}, 1802 ] 1803 } 1804 a: (〈0;#T〉 & { 1805 a: [ 1806 { 1807 link: { 1808 a: [ 1809 {}, 1810 ] 1811 } 1812 }, 1813 ] 1814 }) 1815 } 1816 p6: { 1817 #S: { 1818 #T: { 1819 a: [ 1820 ...{ 1821 link: 〈3;#T〉 1822 }, 1823 ] 1824 } 1825 } 1826 #U: { 1827 〈1;#S〉 1828 #T: { 1829 a: [ 1830 {}, 1831 ] 1832 } 1833 } 1834 a: (〈0;#U〉.#T & { 1835 a: [ 1836 { 1837 link: { 1838 a: [ 1839 {}, 1840 ] 1841 } 1842 }, 1843 ] 1844 }) 1845 } 1846 c1: { 1847 a: { 1848 b: {} 1849 c: (〈1;a〉 & 〈0;b〉) 1850 } 1851 } 1852 d1: { 1853 a: { 1854 b: { 1855 c: { 1856 d: { 1857 h: int 1858 t: 〈4;r〉 1859 } 1860 } 1861 } 1862 } 1863 r: 〈0;a〉.b 1864 x: 〈0;a〉.b.c 1865 } 1866 d2: { 1867 x: 〈0;a〉.b.c 1868 r: 〈0;a〉.b 1869 a: { 1870 b: { 1871 c: { 1872 d: { 1873 h: int 1874 t: 〈4;r〉 1875 } 1876 } 1877 } 1878 } 1879 } 1880 d3: { 1881 config: { 1882 a: { 1883 b: { 1884 c: 〈2;indirect〉 1885 } 1886 } 1887 indirect: [ 1888 〈1;a〉.b, 1889 null, 1890 ][〈0;i〉] 1891 i: (int|*1) 1892 } 1893 x: (〈0;config〉 & { 1894 i: 0 1895 }) 1896 } 1897 e1: { 1898 a: 〈0;a〉 1899 a: { 1900 c: 〈1;a〉 1901 } 1902 b: { 1903 c: 〈1;b〉 1904 } 1905 b: 〈0;b〉 1906 } 1907 e2: { 1908 a: { 1909 〈1;a〉 1910 } 1911 a: { 1912 c: 〈1;a〉 1913 } 1914 b: { 1915 c: 〈1;b〉 1916 } 1917 b: { 1918 〈1;b〉 1919 } 1920 } 1921 e3: { 1922 a: [ 1923 〈1;a〉, 1924 ] 1925 a: { 1926 c: 〈1;a〉 1927 } 1928 b: [ 1929 〈1;b〉, 1930 ] 1931 b: { 1932 c: 〈1;b〉 1933 } 1934 } 1935 e4: { 1936 a: [ 1937 (〈1;a〉|{}), 1938 ] 1939 a: [ 1940 [ 1941 { 1942 c: 1 1943 }, 1944 ], 1945 ] 1946 b: [ 1947 [ 1948 { 1949 c: 1 1950 }, 1951 ], 1952 ] 1953 b: [ 1954 (〈1;b〉|{}), 1955 ] 1956 } 1957 e5: { 1958 a: { 1959 c: (〈1;a〉|int) 1960 } 1961 a: (〈0;a〉|int) 1962 b: (〈0;b〉|int) 1963 b: { 1964 c: (〈1;b〉|int) 1965 } 1966 } 1967 nestedList: { 1968 v1e: { 1969 x: [ 1970 (〈1;x〉|int), 1971 1, 1972 ] 1973 y: (〈0;x〉 & [ 1974 [ 1975 [ 1976 2, 1977 ], 1978 1, 1979 ], 1980 1, 1981 ]) 1982 } 1983 v2e: { 1984 y: (〈0;x〉 & [ 1985 [ 1986 [ 1987 2, 1988 ], 1989 1, 1990 ], 1991 1, 1992 ]) 1993 x: [ 1994 (〈1;x〉|int), 1995 1, 1996 ] 1997 } 1998 v1: { 1999 x: [ 2000 (〈1;x〉|int), 2001 1, 2002 ] 2003 y: (〈0;x〉 & [ 2004 [ 2005 [ 2006 2, 2007 1, 2008 ], 2009 1, 2010 ], 2011 1, 2012 ]) 2013 } 2014 v2: { 2015 y: (〈0;x〉 & [ 2016 [ 2017 [ 2018 2, 2019 1, 2020 ], 2021 1, 2022 ], 2023 1, 2024 ]) 2025 x: [ 2026 (〈1;x〉|int), 2027 1, 2028 ] 2029 } 2030 } 2031 v3: { 2032 list: { 2033 head: int 2034 tail: (〈1;list〉|null) 2035 } 2036 myList: 〈0;list〉 2037 myList: { 2038 head: 2 2039 tail: { 2040 head: 3 2041 tail: { 2042 head: 4 2043 } 2044 } 2045 } 2046 } 2047 v4: { 2048 list: { 2049 head: int 2050 tail: (〈1;list〉|1) 2051 } 2052 myList: 〈0;list〉 2053 myList: { 2054 head: 2 2055 tail: { 2056 head: 3 2057 } 2058 } 2059 } 2060 v5: { 2061 list: { 2062 head: int 2063 tail: (〈1;list〉|{}) 2064 } 2065 myList: 〈0;list〉 2066 myList: { 2067 head: 2 2068 tail: { 2069 head: 3 2070 } 2071 } 2072 } 2073 z1: { 2074 y: { 2075 f: { 2076 h: 〈1;g〉 2077 } 2078 g: _ 2079 } 2080 x: { 2081 f: _ 2082 g: 〈0;f〉 2083 } 2084 z: (〈0;x〉 & 〈0;y〉) 2085 } 2086 n1: { 2087 a: { 2088 b: int 2089 } 2090 } 2091 n2: (〈0;n1〉 & { 2092 a: 〈1;n1〉 2093 }) 2094 n3: (〈0;n1〉 & { 2095 〈1;n1〉 2096 }) 2097 n4: (〈0;n1〉 & { 2098 x: (〈1;n1〉 & { 2099 y: (〈2;n1〉 & { 2100 z: int 2101 }) 2102 }) 2103 }) 2104 }