cuelang.org/go@v0.10.1/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 // Ensure that the cycle error is not blindly copied to a referring field, 59 // as the cycle may not persist. 60 b4: cond1: { 61 b: x.y & { _z: false, [1] } 62 x: y: { 63 _z: *true | bool 64 if _z { 65 [y] 66 } 67 } 68 } 69 70 // This reports a structural cycle at b4.cond2.b, because the value it refers 71 // has a structural cycle. Technically, this is incorrect, as the cycle 72 // really only occurs in b4.cond2.x.y. But since structural cycles are 73 // permanent, the entire configuration is invalidated, so the spurious 74 // additional cycle is merely cosmetic. By most logical standards, one can prove 75 // any fact from a contradiction. So assuming that, this is not incorrect. 76 // TODO: fix this cosmetic blemish. 77 b4: cond2: { 78 x: y: { 79 _z: *true | bool 80 if _z { 81 [y] 82 } 83 } 84 b: x.y & { _z: false, [1] } 85 } 86 87 b5: { 88 b: x.y & {a: [1]} 89 x: y: a: [a | int] 90 } 91 92 b6: { 93 b: x & {a: [1]} 94 x: a: [a] 95 } 96 97 b7: { 98 b: a & [[1]] 99 a: [a] 100 } 101 102 // Issue #555 103 b8: { 104 x: a 105 a: f: b 106 b: a | string 107 } 108 109 // Issue #555 110 b9: { 111 #a: string | #b | #ref 112 #b: { 113 c: [#a, #a, #a] 114 } 115 #ref: ref: string 116 x: #b | #ref 117 } 118 119 // Issue #534 120 // TODO: the resolution here is arguably incorrect: c should be 121 // d: string | { b: string } 122 // However, this is not the end of the world, as the disjunction is preserved 123 // under the hood and still unifies with extended structure. 124 b10: { 125 a: close({ 126 b: string | a | c 127 }) 128 c: close({ 129 d: string | a 130 }) 131 132 d: d: b: string 133 } 134 135 // Issue #509 -- with comprehension 136 b11: { 137 #list: { 138 tail: #list | *null 139 if tail != null { 140 } 141 } 142 } 143 144 // Issue #509 -- with comprehension 145 b12: { 146 #list: { 147 V=value: int 148 T=tail: #list | *null 149 if T != null { 150 sum: V + T.sum 151 } 152 if T == null { 153 sum: V 154 } 155 } 156 157 list1: #list 158 list1: { 159 value: 1 160 tail: { 161 value: 2 162 tail: { 163 value: 3 164 tail: { 165 value: 4 166 } 167 } 168 } 169 } 170 } 171 172 // More trigger happy on stack overflows. 173 b12b: { 174 #list: { 175 tail: #list 176 177 if tail != null { 178 sum: tail.sum 179 } 180 } 181 182 list1: #list 183 list1: { 184 tail: { 185 tail: { 186 } 187 } 188 } 189 } 190 191 // Issue #587 192 b13: root: a: [for x in root {x}] 193 194 // Issue #587 195 // TODO: this should probably be okay if we allow shallow evaluation of 196 // comprehension sources. See #1881. 197 b14: { 198 root: { 199 a: [...int] 200 201 for x in a { 202 "\(x)": {} 203 } 204 205 b: [for x in root {x}] 206 } 207 } 208 209 // This is okay 210 // Issue #587 211 b15: root: a: {for x in root {x}} 212 213 // Issue #502 -- unused bulk constraints are not cyclic 214 p1: { 215 #T: { 216 a: [string]: link: #T 217 } 218 219 a: #T & { 220 a: one: link: a: two: {} 221 } 222 } 223 224 // Issue #502 -- but they are if it is invoked within the struct. 225 p2: { 226 #T: { 227 a: [string]: link: #T 228 a: b: {} 229 } 230 231 a: #T & { 232 a: one: link: a: two: {} 233 } 234 } 235 236 // Issue #502 -- or added later. 237 p3: { 238 #S: #T: { 239 a: [string]: link: #T 240 } 241 242 #U: { 243 #S 244 #T: a: b: {} 245 } 246 247 a: #U.#T & { 248 a: one: link: a: two: {} 249 } 250 } 251 252 // Issue #502 -- unused bulk constraints are not cyclic 253 p4: { 254 #T: { 255 a: [...{link: #T}] 256 } 257 258 a: #T & { 259 a: [{link: a: [{}]}] 260 } 261 } 262 263 // Issue #502 -- but they are if it is invoked within the struct. 264 p5: { 265 #T: { 266 a: [...{link: #T}] 267 a: [{}] 268 } 269 270 a: #T & { 271 a: [{link: a: [{}]}] 272 } 273 } 274 275 // Issue #502 -- or added later. 276 p6: { 277 #S: #T: { 278 a: [...{link: #T}] 279 } 280 281 #U: { 282 #S 283 #T: a: [{}] 284 } 285 286 a: #U.#T & { 287 a: [{link: a: [{}]}] 288 } 289 } 290 291 c1: { 292 a: { 293 b: {} 294 c: a & b 295 } 296 } 297 298 // indirection 299 d1: { 300 a: b: c: d: {h: int, t: r} 301 r: a.b 302 303 x: a.b.c 304 } 305 306 d2: { 307 x: a.b.c 308 309 r: a.b 310 a: b: c: d: {h: int, t: r} 311 } 312 313 d3: { 314 config: { 315 a: b: c: indirect 316 indirect: [a.b, null][i] 317 i: int | *1 318 } 319 x: config & {i: 0} 320 } 321 322 // Ensure that the cycles here fail early. 323 // TODO: they can still be shorter. 324 shortPathFail: _ 325 326 shortPathFail: doubleRef: { 327 // Avoid this: the first #List reference is different from the second, so 328 // the second #List reference counts as a first occurrence, causing the 329 // result to be longer than perhaps expected. 330 a: #List 331 #List: Next: #List | *null 332 } 333 334 shortPathFail: elipsis: { 335 // Avoid this: the elipsis causes `_` to be mixed in with the #Foo 336 // reference, causing the first cycle to be discounted. 337 t1: { 338 #Foo: ref: null | #Foo 339 #Foo: { ... } 340 } 341 t2: { 342 Foo: ref: Foo 343 Foo: {...} 344 } 345 } 346 347 patternFail: issue2374: { 348 r=[string]: {b: r} 349 a: {r: 0} 350 } 351 352 shortPathFail: comprehension: { 353 #list: { 354 tail: #list | *null 355 if tail != null { 356 } 357 } 358 } 359 360 withLetFail: { 361 schema: next: _schema_1 362 let _schema_1 = schema 363 } 364 365 listOptOK: { 366 list: { 367 head: int 368 tail?: list 369 } 370 a: list & {head: 3, tail: head: 2} 371 } 372 373 // combining structural with reference cycles 374 e1: { 375 a: a 376 a: c: a 377 378 b: c: b 379 b: b 380 } 381 382 e2: { 383 a: {a} 384 a: c: a 385 386 b: c: b 387 b: {b} 388 } 389 390 e3: { 391 a: [a] 392 a: c: a 393 394 b: [b] 395 b: c: b 396 } 397 398 e4: { 399 a: [a | {}] 400 a: [[{c: 1}]] 401 402 b: [[{c: 1}]] 403 b: [b | {}] 404 } 405 406 e5: { 407 a: c: a | int 408 a: a | int 409 410 b: b | int 411 b: c: b | int 412 } 413 414 // validating values 415 nestedList: { 416 v1e: { 417 x: [x | int, 1] 418 y: x & [[[2], 1], 1] 419 } 420 421 v2e: { 422 y: x & [[[2], 1], 1] 423 x: [x | int, 1] 424 } 425 426 v1: { 427 x: [x | int, 1] 428 y: x & [[[2, 1], 1], 1] 429 } 430 431 v2: { 432 y: x & [[[2, 1], 1], 1] 433 x: [x | int, 1] 434 } 435 } 436 437 v3: { 438 list: { 439 head: int 440 tail: list | null 441 } 442 443 myList: list 444 myList: { 445 head: 2 446 tail: { 447 head: 3 448 tail: { 449 head: 4 450 } 451 } 452 } 453 } 454 455 v4: { 456 list: { 457 head: int 458 tail: list | 1 459 } 460 461 myList: list 462 myList: { 463 head: 2 464 tail: head: 3 465 } 466 } 467 468 v5: { 469 list: { 470 head: int 471 tail: list | {} 472 } 473 474 myList: list 475 myList: { 476 head: 2 477 tail: head: 3 478 } 479 } 480 481 // Example from "The Logic of Type Feature Structures" (Bob Carpenter)/ 482 z1: { 483 y: { 484 f: h: g 485 g: _ 486 } 487 x: { 488 f: _ 489 g: f 490 } 491 z: x & y 492 } 493 494 // Cross references. Here there is no cycle, but the repeated instantiations 495 // of T will cause, in turn, cause repeated resolution of `x`. The algorithm 496 // should not identify these as cyclic references. Instead, it should be 497 // noted that the reference is each time referring to new content. 498 // Issue #754 499 crossRefNoCycle: t1: { 500 T: { 501 x: _ 502 y: x 503 } 504 C: { x: T } & T 505 } 506 507 crossRefNoCycle: t2: { 508 T: { 509 x: _ 510 y: x 511 } 512 C: T & { x: T } 513 } 514 515 crossRefNoCycle: t3: { 516 T: { 517 x: _ 518 y: x 519 z: y 520 } 521 C: T & { x: T } 522 } 523 524 crossRefNoCycle: t4: { 525 T: { 526 x: _ 527 y: x 528 z: y 529 } 530 C: T & { x: T & { x: T } } 531 } 532 533 // Ensure these are NOT treated as structural errors. 534 535 n1: a: b: int 536 n2: n1 & {a: n1} 537 n3: n1 & {n1} 538 n4: n1 & {x: n1 & {y: n1 & {z: int}}} 539 -- out/eval/stats -- 540 Leaks: 15 541 Freed: 800 542 Reused: 788 543 Allocs: 27 544 Retain: 61 545 546 Unifications: 629 547 Conjuncts: 1224 548 Disjuncts: 847 549 -- out/evalalpha -- 550 Errors: 551 a1.f.0: structural cycle 552 a3.f.g: structural cycle 553 b12b.#list.tail: structural cycle 554 b12b.list1.tail.tail.tail: structural cycle 555 b13.root.a.0.0: structural cycle 556 b14.root.b.1.1: structural cycle 557 b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 558 ./in.cue:53:12 559 ./in.cue:54:8 560 b4.b.0.0: structural cycle 561 b4.cond1.x.y.0: structural cycle 562 b4.cond2.x.y.0: structural cycle 563 b4.x.y.0: structural cycle 564 b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 565 ./in.cue:92:13 566 ./in.cue:92:14 567 b6.b.a.0.0: structural cycle 568 b6.x.a.0: structural cycle 569 b7.a.0: structural cycle 570 b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 571 ./in.cue:97:11 572 ./in.cue:98:5 573 b7.b.0.0.0: structural cycle 574 c1.a.c: structural cycle 575 d1.r: structural cycle 576 e1.a.c: structural cycle 577 e1.b.c: structural cycle 578 e2.a.c: structural cycle 579 e2.b.c: structural cycle 580 e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 581 ./in.cue:390:5 582 ./in.cue:391:5 583 e3.a.c: structural cycle 584 e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 585 ./in.cue:393:5 586 ./in.cue:394:5 587 e3.b.c: structural cycle 588 e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 589 ./in.cue:398:10 590 ./in.cue:399:6 591 e4.a.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 592 ./in.cue:399:6 593 ./in.cue:399:7 594 e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 595 ./in.cue:398:10 596 ./in.cue:399:6 597 e4.a.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 598 ./in.cue:399:6 599 ./in.cue:399:7 600 e4.a.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 601 ./in.cue:398:10 602 ./in.cue:399:6 603 e4.a.0.0.0: structural cycle 604 e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 605 ./in.cue:401:6 606 ./in.cue:402:10 607 e4.b.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 608 ./in.cue:401:6 609 ./in.cue:401:7 610 e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 611 ./in.cue:401:6 612 ./in.cue:402:10 613 e4.b.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 614 ./in.cue:401:6 615 ./in.cue:401:7 616 e4.b.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 617 ./in.cue:401:6 618 ./in.cue:402:10 619 e4.b.0.0.0: structural cycle 620 nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 621 ./in.cue:416:11 622 ./in.cue:417:11 623 nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 624 ./in.cue:416:11 625 ./in.cue:417:12 626 nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 627 ./in.cue:421:11 628 ./in.cue:422:11 629 nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 630 ./in.cue:421:12 631 ./in.cue:422:11 632 p2.#T.a.b.link: structural cycle 633 p3.#U.#T.a.b.link: structural cycle 634 p5.#T.a.0.link: structural cycle 635 p6.#U.#T.a.0.link: structural cycle 636 patternFail.issue2374.a.b: structural cycle 637 shortPathFail.elipsis.t2.Foo.ref: structural cycle 638 z1.z.g.h: structural cycle 639 p3.a.a: field not allowed: 640 ./in.cue:246:5 641 ./in.cue:247:3 642 p6.a.a: field not allowed: 643 ./in.cue:285:5 644 ./in.cue:286:3 645 d3.config.0: structural cycle: 646 ./in.cue:315:13 647 d3.x.0: structural cycle: 648 ./in.cue:315:13 649 withLetFail._schema_1: structural cycle: 650 ./in.cue:360:17 651 e4.a.0.0: cannot combine regular field "c" with [1,{c:1} & (a|{}) & [{c:1}]]: 652 ./in.cue:399:11 653 e4.a.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 654 ./in.cue:399:11 655 e4.b.0.0: cannot combine regular field "c" with [1,{c:1} & [{c:1}] & (b|{})]: 656 ./in.cue:401:11 657 e4.b.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 658 ./in.cue:401:11 659 nestedList.v1e.y.0.0: incompatible list lengths (1 and 2): 660 ./in.cue:416:6 661 nestedList.v2e.y.0.0: incompatible list lengths (1 and 2): 662 ./in.cue:422:6 663 664 Result: 665 (_|_){ 666 // [eval] 667 a1: (_|_){ 668 // [structural cycle] 669 f: (_|_){ 670 // [structural cycle] 671 0: (_|_){ 672 // [structural cycle] a1.f.0: structural cycle 673 } 674 } 675 } 676 a2: (struct){ 677 f: (_){ _ } 678 } 679 a3: (_|_){ 680 // [structural cycle] 681 f: (_|_){ 682 // [structural cycle] 683 g: (_|_){ 684 // [structural cycle] a3.f.g: structural cycle 685 } 686 } 687 } 688 a4: (struct){ 689 a: (#list){ 690 0: (int){ int } 691 } 692 } 693 a5: (struct){ 694 a: (struct){ 695 b: (int){ int } 696 } 697 } 698 a6: (struct){ 699 a: (_){ |((_){ _ }, (int){ int }) } 700 } 701 a7: (struct){ 702 a: (string){ "foo" } 703 b: (struct){ 704 x: (struct){ 705 x: (string){ "foo" } 706 y: (int){ 3 } 707 } 708 y: (string){ "foo" } 709 } 710 c: (struct){ 711 x: (string){ "foo" } 712 y: (int){ 3 } 713 } 714 } 715 b1: (struct){ 716 b: (#list){ 717 0: (int){ 1 } 718 } 719 a: (#list){ 720 0: (int){ int } 721 } 722 } 723 b2: (struct){ 724 a: (#list){ 725 0: (int){ int } 726 } 727 b: (#list){ 728 0: (int){ 1 } 729 } 730 } 731 b3: (struct){ 732 x: (struct){ 733 a: (#list){ 734 0: (int){ int } 735 } 736 } 737 b: (struct){ 738 a: (#list){ 739 0: (int){ 1 } 740 } 741 } 742 } 743 b4: (_|_){ 744 // [eval] 745 b: (_|_){ 746 // [eval] 747 0: (_|_){ 748 // [eval] b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 749 // ./in.cue:53:12 750 // ./in.cue:54:8 751 // b4.b.0.0: structural cycle 752 0: (_|_){ 753 // [structural cycle] b4.b.0.0: structural cycle 754 } 755 } 756 } 757 x: (_|_){ 758 // [structural cycle] 759 y: (_|_){ 760 // [structural cycle] 761 0: (_|_){ 762 // [structural cycle] b4.x.y.0: structural cycle 763 } 764 } 765 } 766 cond1: (_|_){ 767 // [structural cycle] 768 b: (#list){ 769 _z: (bool){ false } 770 0: (int){ 1 } 771 } 772 x: (_|_){ 773 // [structural cycle] 774 y: (_|_){ 775 // [structural cycle] 776 _z: (bool){ |(*(bool){ true }, (bool){ bool }) } 777 0: (_|_){ 778 // [structural cycle] b4.cond1.x.y.0: structural cycle 779 } 780 } 781 } 782 } 783 cond2: (_|_){ 784 // [structural cycle] 785 x: (_|_){ 786 // [structural cycle] 787 y: (_|_){ 788 // [structural cycle] 789 _z: (bool){ |(*(bool){ true }, (bool){ bool }) } 790 0: (_|_){ 791 // [structural cycle] b4.cond2.x.y.0: structural cycle 792 } 793 } 794 } 795 b: (_|_){ 796 // [structural cycle] b4.cond2.x.y.0: structural cycle 797 } 798 } 799 } 800 b5: (struct){ 801 b: (struct){ 802 a: (#list){ 803 0: (int){ 1 } 804 } 805 } 806 x: (struct){ 807 y: (struct){ 808 a: (#list){ 809 0: (int){ int } 810 } 811 } 812 } 813 } 814 b6: (_|_){ 815 // [eval] 816 b: (_|_){ 817 // [eval] 818 a: (_|_){ 819 // [eval] 820 0: (_|_){ 821 // [eval] b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 822 // ./in.cue:92:13 823 // ./in.cue:92:14 824 // b6.b.a.0.0: structural cycle 825 0: (_|_){ 826 // [structural cycle] b6.b.a.0.0: structural cycle 827 } 828 } 829 } 830 } 831 x: (_|_){ 832 // [structural cycle] 833 a: (_|_){ 834 // [structural cycle] 835 0: (_|_){ 836 // [structural cycle] b6.x.a.0: structural cycle 837 } 838 } 839 } 840 } 841 b7: (_|_){ 842 // [eval] 843 b: (_|_){ 844 // [eval] 845 0: (_|_){ 846 // [eval] 847 0: (_|_){ 848 // [eval] b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 849 // ./in.cue:97:11 850 // ./in.cue:98:5 851 // b7.b.0.0.0: structural cycle 852 0: (_|_){ 853 // [structural cycle] b7.b.0.0.0: structural cycle 854 } 855 } 856 } 857 } 858 a: (_|_){ 859 // [structural cycle] 860 0: (_|_){ 861 // [structural cycle] b7.a.0: structural cycle 862 } 863 } 864 } 865 b8: (struct){ 866 x: (struct){ 867 f: (string){ string } 868 } 869 a: (struct){ 870 f: (string){ string } 871 } 872 b: (string){ string } 873 } 874 b9: (struct){ 875 #a: ((string|struct)){ |((string){ string }, (#struct){ 876 ref: (string){ string } 877 }) } 878 #b: (#struct){ 879 c: (#list){ 880 0: ((string|struct)){ |((string){ string }, (#struct){ 881 ref: (string){ string } 882 }) } 883 1: ((string|struct)){ |((string){ string }, (#struct){ 884 ref: (string){ string } 885 }) } 886 2: ((string|struct)){ |((string){ string }, (#struct){ 887 ref: (string){ string } 888 }) } 889 } 890 } 891 #ref: (#struct){ 892 ref: (string){ string } 893 } 894 x: (struct){ |((#struct){ 895 c: (#list){ 896 0: ((string|struct)){ |((string){ string }, (#struct){ 897 ref: (string){ string } 898 }) } 899 1: ((string|struct)){ |((string){ string }, (#struct){ 900 ref: (string){ string } 901 }) } 902 2: ((string|struct)){ |((string){ string }, (#struct){ 903 ref: (string){ string } 904 }) } 905 } 906 }, (#struct){ 907 ref: (string){ string } 908 }) } 909 } 910 b10: (struct){ 911 a: (#struct){ 912 b: ((string|struct)){ |((string){ string }, (#struct){ 913 d: (string){ string } 914 }) } 915 } 916 c: (#struct){ 917 d: ((string|struct)){ |((string){ string }, (#struct){ 918 b: (string){ string } 919 }) } 920 } 921 d: (struct){ 922 d: (struct){ 923 b: (string){ string } 924 } 925 } 926 } 927 b11: (struct){ 928 #list: (#struct){ 929 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 930 tail: (null){ null } 931 }) } 932 } 933 } 934 b12: (struct){ 935 #list: (#struct){ 936 value: (int){ int } 937 tail: (null){ null } 938 sum: (int){ int } 939 } 940 list1: (#struct){ 941 value: (int){ 1 } 942 tail: (#struct){ 943 value: (int){ 2 } 944 tail: (#struct){ 945 value: (int){ 3 } 946 tail: (#struct){ 947 value: (int){ 4 } 948 tail: (null){ null } 949 sum: (int){ 4 } 950 } 951 sum: (int){ 7 } 952 } 953 sum: (int){ 9 } 954 } 955 sum: (int){ 10 } 956 } 957 } 958 b12b: (_|_){ 959 // [structural cycle] 960 #list: (_|_){ 961 // [structural cycle] b12b.#list.tail: structural cycle 962 } 963 list1: (_|_){ 964 // [structural cycle] b12b.list1.tail.tail.tail: structural cycle 965 } 966 } 967 b13: (_|_){ 968 // [structural cycle] 969 root: (_|_){ 970 // [structural cycle] 971 a: (_|_){ 972 // [structural cycle] 973 0: (_|_){ 974 // [structural cycle] 975 0: (_|_){ 976 // [structural cycle] b13.root.a.0.0: structural cycle 977 } 978 } 979 } 980 } 981 } 982 b14: (_|_){ 983 // [structural cycle] 984 root: (_|_){ 985 // [structural cycle] 986 a: (list){ 987 } 988 b: (_|_){ 989 // [structural cycle] 990 0: (list){ 991 } 992 1: (_|_){ 993 // [structural cycle] 994 0: (list){ 995 } 996 1: (_|_){ 997 // [structural cycle] b14.root.b.1.1: structural cycle 998 } 999 } 1000 } 1001 } 1002 } 1003 b15: (struct){ 1004 root: (struct){ 1005 a: (struct){ 1006 } 1007 } 1008 } 1009 p1: (struct){ 1010 #T: (#struct){ 1011 a: (#struct){ 1012 } 1013 } 1014 a: (#struct){ 1015 a: (#struct){ 1016 one: (#struct){ 1017 link: (#struct){ 1018 a: (#struct){ 1019 two: (#struct){ 1020 link: (#struct){ 1021 a: (#struct){ 1022 } 1023 } 1024 } 1025 } 1026 } 1027 } 1028 } 1029 } 1030 } 1031 p2: (_|_){ 1032 // [structural cycle] 1033 #T: (_|_){ 1034 // [structural cycle] 1035 a: (_|_){ 1036 // [structural cycle] 1037 b: (_|_){ 1038 // [structural cycle] 1039 link: (_|_){ 1040 // [structural cycle] p2.#T.a.b.link: structural cycle 1041 } 1042 } 1043 } 1044 } 1045 a: (_|_){ 1046 // [structural cycle] 1047 a: (_|_){ 1048 // [structural cycle] 1049 one: (_|_){ 1050 // [structural cycle] 1051 link: (_|_){ 1052 // [structural cycle] 1053 a: (_|_){ 1054 // [structural cycle] 1055 two: (_|_){ 1056 // [structural cycle] 1057 link: ~(p2.#T) 1058 } 1059 b: (_|_){ 1060 // [structural cycle] 1061 link: ~(p2.#T) 1062 } 1063 } 1064 } 1065 } 1066 b: (_|_){ 1067 // [structural cycle] 1068 link: ~(p2.#T) 1069 } 1070 } 1071 } 1072 } 1073 p3: (_|_){ 1074 // [eval] 1075 #S: (#struct){ 1076 #T: (#struct){ 1077 a: (#struct){ 1078 } 1079 } 1080 } 1081 #U: (_|_){ 1082 // [structural cycle] 1083 #T: (_|_){ 1084 // [structural cycle] 1085 a: (_|_){ 1086 // [structural cycle] 1087 b: (_|_){ 1088 // [structural cycle] 1089 link: (_|_){ 1090 // [structural cycle] p3.#U.#T.a.b.link: structural cycle 1091 } 1092 } 1093 } 1094 } 1095 } 1096 a: (_|_){ 1097 // [eval] p3.#U.#T.a.b.link: structural cycle 1098 // p3.a.a: field not allowed: 1099 // ./in.cue:246:5 1100 // ./in.cue:247:3 1101 a: (_|_){ 1102 // [eval] p3.a.a: field not allowed: 1103 // ./in.cue:246:5 1104 // ./in.cue:247:3 1105 } 1106 } 1107 } 1108 p4: (struct){ 1109 #T: (#struct){ 1110 a: (list){ 1111 } 1112 } 1113 a: (#struct){ 1114 a: (#list){ 1115 0: (#struct){ 1116 link: (#struct){ 1117 a: (#list){ 1118 0: (#struct){ 1119 link: (#struct){ 1120 a: (list){ 1121 } 1122 } 1123 } 1124 } 1125 } 1126 } 1127 } 1128 } 1129 } 1130 p5: (_|_){ 1131 // [structural cycle] 1132 #T: (_|_){ 1133 // [structural cycle] 1134 a: (_|_){ 1135 // [structural cycle] 1136 0: (_|_){ 1137 // [structural cycle] 1138 link: (_|_){ 1139 // [structural cycle] p5.#T.a.0.link: structural cycle 1140 } 1141 } 1142 } 1143 } 1144 a: (_|_){ 1145 // [structural cycle] 1146 a: (_|_){ 1147 // [structural cycle] 1148 0: (_|_){ 1149 // [structural cycle] 1150 link: (_|_){ 1151 // [structural cycle] 1152 a: (_|_){ 1153 // [structural cycle] 1154 0: (_|_){ 1155 // [structural cycle] 1156 link: ~(p5.#T) 1157 } 1158 } 1159 } 1160 } 1161 } 1162 } 1163 } 1164 p6: (_|_){ 1165 // [eval] 1166 #S: (#struct){ 1167 #T: (#struct){ 1168 a: (list){ 1169 } 1170 } 1171 } 1172 #U: (_|_){ 1173 // [structural cycle] 1174 #T: (_|_){ 1175 // [structural cycle] 1176 a: (_|_){ 1177 // [structural cycle] 1178 0: (_|_){ 1179 // [structural cycle] 1180 link: (_|_){ 1181 // [structural cycle] p6.#U.#T.a.0.link: structural cycle 1182 } 1183 } 1184 } 1185 } 1186 } 1187 a: (_|_){ 1188 // [eval] p6.#U.#T.a.0.link: structural cycle 1189 // p6.a.a: field not allowed: 1190 // ./in.cue:285:5 1191 // ./in.cue:286:3 1192 a: (_|_){ 1193 // [eval] p6.a.a: field not allowed: 1194 // ./in.cue:285:5 1195 // ./in.cue:286:3 1196 } 1197 } 1198 } 1199 c1: (_|_){ 1200 // [structural cycle] 1201 a: (_|_){ 1202 // [structural cycle] 1203 b: (struct){ 1204 } 1205 c: (_|_){ 1206 // [structural cycle] c1.a.c: structural cycle 1207 } 1208 } 1209 } 1210 d1: (_|_){ 1211 // [structural cycle] 1212 a: (_|_){ 1213 // [structural cycle] 1214 b: (_|_){ 1215 // [structural cycle] 1216 c: (_|_){ 1217 // [structural cycle] 1218 d: (_|_){ 1219 // [structural cycle] 1220 h: (int){ int } 1221 t: (_|_){ 1222 // [structural cycle] d1.r: structural cycle 1223 } 1224 } 1225 } 1226 } 1227 } 1228 r: (_|_){ 1229 // [structural cycle] d1.r: structural cycle 1230 } 1231 x: (_|_){ 1232 // [structural cycle] d1.r: structural cycle 1233 } 1234 } 1235 d2: (struct){ 1236 x: ~(d2.a.b.c) 1237 r: (struct){ 1238 c: (_|_){ 1239 // [cycle] d2.a.b.c: mutual dependency 1240 } 1241 } 1242 a: (struct){ 1243 b: (struct){ 1244 c: (_|_){ 1245 // [cycle] d2.a.b.c: mutual dependency 1246 } 1247 } 1248 } 1249 } 1250 d3: (_|_){ 1251 // [structural cycle] 1252 config: (_|_){ 1253 // [structural cycle] 1254 a: (_|_){ 1255 // [structural cycle] 1256 b: (_|_){ 1257 // [structural cycle] 1258 c: (_|_){ 1259 // [structural cycle] d3.config.0: structural cycle: 1260 // ./in.cue:315:13 1261 } 1262 } 1263 } 1264 indirect: (_|_){ 1265 // [structural cycle] d3.config.0: structural cycle: 1266 // ./in.cue:315:13 1267 } 1268 i: (int){ |(*(int){ 1 }, (int){ int }) } 1269 } 1270 x: (_|_){ 1271 // [structural cycle] 1272 i: (int){ 0 } 1273 a: (_|_){ 1274 // [structural cycle] 1275 b: (_|_){ 1276 // [structural cycle] 1277 c: (_|_){ 1278 // [structural cycle] d3.x.0: structural cycle: 1279 // ./in.cue:315:13 1280 } 1281 } 1282 } 1283 indirect: (_|_){ 1284 // [structural cycle] d3.x.0: structural cycle: 1285 // ./in.cue:315:13 1286 } 1287 } 1288 } 1289 shortPathFail: (_|_){ 1290 // [structural cycle] 1291 doubleRef: (struct){ 1292 a: (#struct){ 1293 Next: (null){ null } 1294 } 1295 #List: (#struct){ 1296 Next: (null){ null } 1297 } 1298 } 1299 elipsis: (_|_){ 1300 // [structural cycle] 1301 t1: (struct){ 1302 #Foo: (#struct){ 1303 ref: (null){ null } 1304 } 1305 } 1306 t2: (_|_){ 1307 // [structural cycle] 1308 Foo: (_|_){ 1309 // [structural cycle] 1310 ref: (_|_){ 1311 // [structural cycle] shortPathFail.elipsis.t2.Foo.ref: structural cycle 1312 } 1313 } 1314 } 1315 } 1316 comprehension: (struct){ 1317 #list: (#struct){ 1318 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 1319 tail: (null){ null } 1320 }) } 1321 } 1322 } 1323 } 1324 patternFail: (_|_){ 1325 // [structural cycle] 1326 issue2374: (_|_){ 1327 // [structural cycle] 1328 a: (_|_){ 1329 // [structural cycle] 1330 r: (int){ 0 } 1331 b: (_|_){ 1332 // [structural cycle] patternFail.issue2374.a.b: structural cycle 1333 } 1334 } 1335 } 1336 } 1337 withLetFail: (_|_){ 1338 // [structural cycle] 1339 schema: (_|_){ 1340 // [structural cycle] 1341 next: (_|_){ 1342 // [structural cycle] withLetFail._schema_1: structural cycle: 1343 // ./in.cue:360:17 1344 } 1345 } 1346 let _schema_1#1 = (_|_){ 1347 // [structural cycle] withLetFail._schema_1: structural cycle: 1348 // ./in.cue:360:17 1349 } 1350 } 1351 listOptOK: (struct){ 1352 list: (struct){ 1353 head: (int){ int } 1354 tail?: (_|_){ 1355 // [structural cycle] listOptOK.list.tail: structural cycle 1356 } 1357 } 1358 a: (struct){ 1359 head: (int){ 3 } 1360 tail: (struct){ 1361 head: (int){ 2 } 1362 tail?: (_|_){ 1363 // [structural cycle] listOptOK.a.tail.tail: structural cycle 1364 } 1365 } 1366 } 1367 } 1368 e1: (_|_){ 1369 // [structural cycle] 1370 a: (_|_){ 1371 // [structural cycle] 1372 c: (_|_){ 1373 // [structural cycle] e1.a.c: structural cycle 1374 } 1375 } 1376 b: (_|_){ 1377 // [structural cycle] 1378 c: (_|_){ 1379 // [structural cycle] e1.b.c: structural cycle 1380 } 1381 } 1382 } 1383 e2: (_|_){ 1384 // [structural cycle] 1385 a: (_|_){ 1386 // [structural cycle] 1387 c: (_|_){ 1388 // [structural cycle] e2.a.c: structural cycle 1389 } 1390 } 1391 b: (_|_){ 1392 // [structural cycle] 1393 c: (_|_){ 1394 // [structural cycle] e2.b.c: structural cycle 1395 } 1396 } 1397 } 1398 e3: (_|_){ 1399 // [eval] 1400 a: (_|_){ 1401 // [eval] e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 1402 // ./in.cue:390:5 1403 // ./in.cue:391:5 1404 // e3.a.c: structural cycle 1405 c: (_|_){ 1406 // [structural cycle] e3.a.c: structural cycle 1407 } 1408 0: (_|_){ 1409 // [structural cycle] e3.a.0: structural cycle 1410 } 1411 } 1412 b: (_|_){ 1413 // [eval] e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 1414 // ./in.cue:393:5 1415 // ./in.cue:394:5 1416 // e3.b.c: structural cycle 1417 c: (_|_){ 1418 // [structural cycle] e3.b.c: structural cycle 1419 } 1420 0: (_|_){ 1421 // [structural cycle] e3.b.0: structural cycle 1422 } 1423 } 1424 } 1425 e4: (_|_){ 1426 // [eval] 1427 a: (_|_){ 1428 // [eval] 1429 0: (_|_){ 1430 // [eval] e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1431 // ./in.cue:398:10 1432 // ./in.cue:399:6 1433 // e4.a.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1434 // ./in.cue:399:6 1435 // ./in.cue:399:7 1436 // e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1437 // ./in.cue:398:10 1438 // ./in.cue:399:6 1439 // e4.a.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1440 // ./in.cue:399:6 1441 // ./in.cue:399:7 1442 // e4.a.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1443 // ./in.cue:398:10 1444 // ./in.cue:399:6 1445 // e4.a.0.0.0: structural cycle 1446 // e4.a.0.0: cannot combine regular field "c" with [1,{c:1} & (a|{}) & [{c:1}]]: 1447 // ./in.cue:399:11 1448 // e4.a.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 1449 // ./in.cue:399:11 1450 } 1451 } 1452 b: (_|_){ 1453 // [eval] 1454 0: (_|_){ 1455 // [eval] e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1456 // ./in.cue:401:6 1457 // ./in.cue:402:10 1458 // e4.b.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1459 // ./in.cue:401:6 1460 // ./in.cue:401:7 1461 // e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1462 // ./in.cue:401:6 1463 // ./in.cue:402:10 1464 // e4.b.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1465 // ./in.cue:401:6 1466 // ./in.cue:401:7 1467 // e4.b.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1468 // ./in.cue:401:6 1469 // ./in.cue:402:10 1470 // e4.b.0.0.0: structural cycle 1471 // e4.b.0.0: cannot combine regular field "c" with [1,{c:1} & [{c:1}] & (b|{})]: 1472 // ./in.cue:401:11 1473 // e4.b.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 1474 // ./in.cue:401:11 1475 } 1476 } 1477 } 1478 e5: (struct){ 1479 a: (struct){ 1480 c: (int){ int } 1481 } 1482 b: (struct){ 1483 c: (int){ int } 1484 } 1485 } 1486 nestedList: (_|_){ 1487 // [eval] 1488 v1e: (_|_){ 1489 // [eval] 1490 x: (#list){ 1491 0: (int){ int } 1492 1: (int){ 1 } 1493 } 1494 y: (_|_){ 1495 // [eval] 1496 0: (_|_){ 1497 // [eval] nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1498 // ./in.cue:416:11 1499 // ./in.cue:417:11 1500 // nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1501 // ./in.cue:416:11 1502 // ./in.cue:417:12 1503 // nestedList.v1e.y.0.0: incompatible list lengths (1 and 2): 1504 // ./in.cue:416:6 1505 } 1506 1: (int){ 1 } 1507 } 1508 } 1509 v2e: (_|_){ 1510 // [eval] 1511 y: (_|_){ 1512 // [eval] 1513 0: (_|_){ 1514 // [eval] nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1515 // ./in.cue:421:11 1516 // ./in.cue:422:11 1517 // nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1518 // ./in.cue:421:12 1519 // ./in.cue:422:11 1520 // nestedList.v2e.y.0.0: incompatible list lengths (1 and 2): 1521 // ./in.cue:422:6 1522 } 1523 1: (int){ 1 } 1524 } 1525 x: (#list){ 1526 0: (int){ int } 1527 1: (int){ 1 } 1528 } 1529 } 1530 v1: (struct){ 1531 x: (#list){ 1532 0: (int){ int } 1533 1: (int){ 1 } 1534 } 1535 y: (#list){ 1536 0: (#list){ 1537 0: (#list){ 1538 0: (int){ 2 } 1539 1: (int){ 1 } 1540 } 1541 1: (int){ 1 } 1542 } 1543 1: (int){ 1 } 1544 } 1545 } 1546 v2: (struct){ 1547 y: (#list){ 1548 0: (#list){ 1549 0: (#list){ 1550 0: (int){ 2 } 1551 1: (int){ 1 } 1552 } 1553 1: (int){ 1 } 1554 } 1555 1: (int){ 1 } 1556 } 1557 x: (#list){ 1558 0: (int){ int } 1559 1: (int){ 1 } 1560 } 1561 } 1562 } 1563 v3: (struct){ 1564 list: (struct){ 1565 head: (int){ int } 1566 tail: (null){ null } 1567 } 1568 myList: (struct){ 1569 head: (int){ 2 } 1570 tail: (struct){ 1571 head: (int){ 3 } 1572 tail: (struct){ 1573 head: (int){ 4 } 1574 tail: (null){ null } 1575 } 1576 } 1577 } 1578 } 1579 v4: (struct){ 1580 list: (struct){ 1581 head: (int){ int } 1582 tail: (int){ 1 } 1583 } 1584 myList: (struct){ 1585 head: (int){ 2 } 1586 tail: (struct){ 1587 head: (int){ 3 } 1588 tail: (int){ 1 } 1589 } 1590 } 1591 } 1592 v5: (struct){ 1593 list: (struct){ 1594 head: (int){ int } 1595 tail: (struct){ 1596 } 1597 } 1598 myList: (struct){ 1599 head: (int){ 2 } 1600 tail: (struct){ |((struct){ 1601 head: (int){ 3 } 1602 tail: (struct){ 1603 } 1604 }, (struct){ 1605 head: (int){ 3 } 1606 }) } 1607 } 1608 } 1609 z1: (_|_){ 1610 // [structural cycle] 1611 y: (struct){ 1612 f: (struct){ 1613 h: (_){ _ } 1614 } 1615 g: (_){ _ } 1616 } 1617 x: (struct){ 1618 f: (_){ _ } 1619 g: (_){ _ } 1620 } 1621 z: (_|_){ 1622 // [structural cycle] 1623 f: (_|_){ 1624 // [structural cycle] 1625 h: ~(z1.z.g) 1626 } 1627 g: (_|_){ 1628 // [structural cycle] 1629 h: (_|_){ 1630 // [structural cycle] z1.z.g.h: structural cycle 1631 } 1632 } 1633 } 1634 } 1635 crossRefNoCycle: (struct){ 1636 t1: (struct){ 1637 T: (struct){ 1638 x: (_){ _ } 1639 y: (_){ _ } 1640 } 1641 C: (struct){ 1642 x: (struct){ 1643 x: (_){ _ } 1644 y: (_){ _ } 1645 } 1646 y: (struct){ 1647 x: (_){ _ } 1648 y: (_){ _ } 1649 } 1650 } 1651 } 1652 t2: (struct){ 1653 T: (struct){ 1654 x: (_){ _ } 1655 y: (_){ _ } 1656 } 1657 C: (struct){ 1658 x: (struct){ 1659 x: (_){ _ } 1660 y: (_){ _ } 1661 } 1662 y: (struct){ 1663 x: (_){ _ } 1664 y: (_){ _ } 1665 } 1666 } 1667 } 1668 t3: (struct){ 1669 T: (struct){ 1670 x: (_){ _ } 1671 y: (_){ _ } 1672 z: (_){ _ } 1673 } 1674 C: (struct){ 1675 x: (struct){ 1676 x: (_){ _ } 1677 y: (_){ _ } 1678 z: (_){ _ } 1679 } 1680 y: (struct){ 1681 x: (_){ _ } 1682 y: (_){ _ } 1683 z: (_){ _ } 1684 } 1685 z: (struct){ 1686 x: (_){ _ } 1687 y: (_){ _ } 1688 z: (_){ _ } 1689 } 1690 } 1691 } 1692 t4: (struct){ 1693 T: (struct){ 1694 x: (_){ _ } 1695 y: (_){ _ } 1696 z: (_){ _ } 1697 } 1698 C: (struct){ 1699 x: (struct){ 1700 x: (struct){ 1701 x: (_){ _ } 1702 y: (_){ _ } 1703 z: (_){ _ } 1704 } 1705 y: (struct){ 1706 x: (_){ _ } 1707 y: (_){ _ } 1708 z: (_){ _ } 1709 } 1710 z: (struct){ 1711 x: (_){ _ } 1712 y: (_){ _ } 1713 z: (_){ _ } 1714 } 1715 } 1716 y: (struct){ 1717 x: (struct){ 1718 x: (_){ _ } 1719 y: (_){ _ } 1720 z: (_){ _ } 1721 } 1722 y: (struct){ 1723 x: (_){ _ } 1724 y: (_){ _ } 1725 z: (_){ _ } 1726 } 1727 z: (struct){ 1728 x: (_){ _ } 1729 y: (_){ _ } 1730 z: (_){ _ } 1731 } 1732 } 1733 z: (struct){ 1734 x: (struct){ 1735 x: (_){ _ } 1736 y: (_){ _ } 1737 z: (_){ _ } 1738 } 1739 y: (struct){ 1740 x: (_){ _ } 1741 y: (_){ _ } 1742 z: (_){ _ } 1743 } 1744 z: (struct){ 1745 x: (_){ _ } 1746 y: (_){ _ } 1747 z: (_){ _ } 1748 } 1749 } 1750 } 1751 } 1752 } 1753 n1: (struct){ 1754 a: (struct){ 1755 b: (int){ int } 1756 } 1757 } 1758 n2: (struct){ 1759 a: (struct){ 1760 b: (int){ int } 1761 a: (struct){ 1762 b: (int){ int } 1763 } 1764 } 1765 } 1766 n3: (struct){ 1767 a: (struct){ 1768 b: (int){ int } 1769 } 1770 } 1771 n4: (struct){ 1772 x: (struct){ 1773 y: (struct){ 1774 z: (int){ int } 1775 a: (struct){ 1776 b: (int){ int } 1777 } 1778 } 1779 a: (struct){ 1780 b: (int){ int } 1781 } 1782 } 1783 a: (struct){ 1784 b: (int){ int } 1785 } 1786 } 1787 } 1788 -- diff/-out/evalalpha<==>+out/eval -- 1789 diff old new 1790 --- old 1791 +++ new 1792 @@ -2,24 +2,28 @@ 1793 a1.f.0: structural cycle 1794 a3.f.g: structural cycle 1795 b12b.#list.tail: structural cycle 1796 +b12b.list1.tail.tail.tail: structural cycle 1797 b13.root.a.0.0: structural cycle 1798 b14.root.b.1.1: structural cycle 1799 +b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 1800 + ./in.cue:53:12 1801 + ./in.cue:54:8 1802 +b4.b.0.0: structural cycle 1803 b4.cond1.x.y.0: structural cycle 1804 b4.cond2.x.y.0: structural cycle 1805 b4.x.y.0: structural cycle 1806 b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 1807 - ./in.cue:92:5 1808 ./in.cue:92:13 1809 ./in.cue:92:14 1810 - ./in.cue:93:9 1811 b6.b.a.0.0: structural cycle 1812 b6.x.a.0: structural cycle 1813 b7.a.0: structural cycle 1814 -c1.a.c.c: structural cycle 1815 -d1.a.b.c.d.t: structural cycle 1816 -d2.a.b.c.d.t: structural cycle 1817 -d2.r.c.d.t: structural cycle 1818 -d3.x.a.b.c: structural cycle 1819 +b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 1820 + ./in.cue:97:11 1821 + ./in.cue:98:5 1822 +b7.b.0.0.0: structural cycle 1823 +c1.a.c: structural cycle 1824 +d1.r: structural cycle 1825 e1.a.c: structural cycle 1826 e1.b.c: structural cycle 1827 e2.a.c: structural cycle 1828 @@ -32,61 +36,81 @@ 1829 ./in.cue:393:5 1830 ./in.cue:394:5 1831 e3.b.c: structural cycle 1832 -e4.a.0: 4 errors in empty disjunction: 1833 e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1834 ./in.cue:398:10 1835 ./in.cue:399:6 1836 -e4.a.0.0: 2 errors in empty disjunction: 1837 -e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 1838 - ./in.cue:399:5 1839 +e4.a.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1840 + ./in.cue:399:6 1841 ./in.cue:399:7 1842 e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1843 - ./in.cue:398:6 1844 - ./in.cue:398:10 1845 - ./in.cue:399:6 1846 -e4.b.0: 4 errors in empty disjunction: 1847 + ./in.cue:398:10 1848 + ./in.cue:399:6 1849 +e4.a.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1850 + ./in.cue:399:6 1851 + ./in.cue:399:7 1852 +e4.a.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1853 + ./in.cue:398:10 1854 + ./in.cue:399:6 1855 +e4.a.0.0.0: structural cycle 1856 e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1857 ./in.cue:401:6 1858 ./in.cue:402:10 1859 -e4.b.0.0: 2 errors in empty disjunction: 1860 -e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 1861 - ./in.cue:401:7 1862 - ./in.cue:402:5 1863 +e4.b.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1864 + ./in.cue:401:6 1865 + ./in.cue:401:7 1866 e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1867 ./in.cue:401:6 1868 - ./in.cue:402:6 1869 - ./in.cue:402:10 1870 -nestedList.v1e.y.0: 4 errors in empty disjunction: 1871 + ./in.cue:402:10 1872 +e4.b.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 1873 + ./in.cue:401:6 1874 + ./in.cue:401:7 1875 +e4.b.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 1876 + ./in.cue:401:6 1877 + ./in.cue:402:10 1878 +e4.b.0.0.0: structural cycle 1879 nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1880 ./in.cue:416:11 1881 ./in.cue:417:11 1882 -nestedList.v1e.y.0.0: 2 errors in empty disjunction: 1883 nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1884 ./in.cue:416:11 1885 ./in.cue:417:12 1886 -nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 1887 -nestedList.v2e.y.0: 4 errors in empty disjunction: 1888 nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 1889 ./in.cue:421:11 1890 ./in.cue:422:11 1891 -nestedList.v2e.y.0.0: 2 errors in empty disjunction: 1892 nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 1893 ./in.cue:421:12 1894 ./in.cue:422:11 1895 -nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 1896 p2.#T.a.b.link: structural cycle 1897 p3.#U.#T.a.b.link: structural cycle 1898 p5.#T.a.0.link: structural cycle 1899 p6.#U.#T.a.0.link: structural cycle 1900 patternFail.issue2374.a.b: structural cycle 1901 -shortPathFail.elipsis.t2.Foo.ref.ref: structural cycle 1902 -withLetFail.schema.next: structural cycle 1903 -z1.z.f.h: structural cycle 1904 +shortPathFail.elipsis.t2.Foo.ref: structural cycle 1905 z1.z.g.h: structural cycle 1906 -d1.r: structural cycle: 1907 - ./in.cue:299:26 1908 -d3.x.indirect: structural cycle: 1909 - ./in.cue:314:12 1910 +p3.a.a: field not allowed: 1911 + ./in.cue:246:5 1912 + ./in.cue:247:3 1913 +p6.a.a: field not allowed: 1914 + ./in.cue:285:5 1915 + ./in.cue:286:3 1916 +d3.config.0: structural cycle: 1917 + ./in.cue:315:13 1918 +d3.x.0: structural cycle: 1919 + ./in.cue:315:13 1920 +withLetFail._schema_1: structural cycle: 1921 + ./in.cue:360:17 1922 +e4.a.0.0: cannot combine regular field "c" with [1,{c:1} & (a|{}) & [{c:1}]]: 1923 + ./in.cue:399:11 1924 +e4.a.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 1925 + ./in.cue:399:11 1926 +e4.b.0.0: cannot combine regular field "c" with [1,{c:1} & [{c:1}] & (b|{})]: 1927 + ./in.cue:401:11 1928 +e4.b.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 1929 + ./in.cue:401:11 1930 +nestedList.v1e.y.0.0: incompatible list lengths (1 and 2): 1931 + ./in.cue:416:6 1932 +nestedList.v2e.y.0.0: incompatible list lengths (1 and 2): 1933 + ./in.cue:422:6 1934 1935 Result: 1936 (_|_){ 1937 @@ -168,11 +192,17 @@ 1938 } 1939 } 1940 b4: (_|_){ 1941 - // [structural cycle] 1942 - b: (_|_){ 1943 - // [structural cycle] 1944 - 0: (_|_){ 1945 - // [structural cycle] b4.x.y.0: structural cycle 1946 + // [eval] 1947 + b: (_|_){ 1948 + // [eval] 1949 + 0: (_|_){ 1950 + // [eval] b4.b.0: conflicting values 1 and [y] (mismatched types int and list): 1951 + // ./in.cue:53:12 1952 + // ./in.cue:54:8 1953 + // b4.b.0.0: structural cycle 1954 + 0: (_|_){ 1955 + // [structural cycle] b4.b.0.0: structural cycle 1956 + } 1957 } 1958 } 1959 x: (_|_){ 1960 @@ -240,10 +270,9 @@ 1961 // [eval] 1962 0: (_|_){ 1963 // [eval] b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 1964 - // ./in.cue:92:5 1965 // ./in.cue:92:13 1966 // ./in.cue:92:14 1967 - // ./in.cue:93:9 1968 + // b6.b.a.0.0: structural cycle 1969 0: (_|_){ 1970 // [structural cycle] b6.b.a.0.0: structural cycle 1971 } 1972 @@ -261,11 +290,20 @@ 1973 } 1974 } 1975 b7: (_|_){ 1976 - // [structural cycle] 1977 - b: (_|_){ 1978 - // [structural cycle] 1979 - 0: (_|_){ 1980 - // [structural cycle] b7.a.0: structural cycle 1981 + // [eval] 1982 + b: (_|_){ 1983 + // [eval] 1984 + 0: (_|_){ 1985 + // [eval] 1986 + 0: (_|_){ 1987 + // [eval] b7.b.0.0: conflicting values 1 and [a] (mismatched types int and list): 1988 + // ./in.cue:97:11 1989 + // ./in.cue:98:5 1990 + // b7.b.0.0.0: structural cycle 1991 + 0: (_|_){ 1992 + // [structural cycle] b7.b.0.0.0: structural cycle 1993 + } 1994 + } 1995 } 1996 } 1997 a: (_|_){ 1998 @@ -304,7 +342,7 @@ 1999 #ref: (#struct){ 2000 ref: (string){ string } 2001 } 2002 - x: (#struct){ |((#struct){ 2003 + x: (struct){ |((#struct){ 2004 c: (#list){ 2005 0: ((string|struct)){ |((string){ string }, (#struct){ 2006 ref: (string){ string } 2007 @@ -327,7 +365,9 @@ 2008 }) } 2009 } 2010 c: (#struct){ 2011 - d: (string){ string } 2012 + d: ((string|struct)){ |((string){ string }, (#struct){ 2013 + b: (string){ string } 2014 + }) } 2015 } 2016 d: (struct){ 2017 d: (struct){ 2018 @@ -372,7 +412,7 @@ 2019 // [structural cycle] b12b.#list.tail: structural cycle 2020 } 2021 list1: (_|_){ 2022 - // [structural cycle] b12b.#list.tail: structural cycle 2023 + // [structural cycle] b12b.list1.tail.tail.tail: structural cycle 2024 } 2025 } 2026 b13: (_|_){ 2027 @@ -455,20 +495,34 @@ 2028 } 2029 a: (_|_){ 2030 // [structural cycle] 2031 - a: (struct){ 2032 - one: (struct){ 2033 - link: (struct){ 2034 - a: (struct){ 2035 - two: (struct){ 2036 - } 2037 - } 2038 - } 2039 + a: (_|_){ 2040 + // [structural cycle] 2041 + one: (_|_){ 2042 + // [structural cycle] 2043 + link: (_|_){ 2044 + // [structural cycle] 2045 + a: (_|_){ 2046 + // [structural cycle] 2047 + two: (_|_){ 2048 + // [structural cycle] 2049 + link: ~(p2.#T) 2050 + } 2051 + b: (_|_){ 2052 + // [structural cycle] 2053 + link: ~(p2.#T) 2054 + } 2055 + } 2056 + } 2057 + } 2058 + b: (_|_){ 2059 + // [structural cycle] 2060 + link: ~(p2.#T) 2061 } 2062 } 2063 } 2064 } 2065 p3: (_|_){ 2066 - // [structural cycle] 2067 + // [eval] 2068 #S: (#struct){ 2069 #T: (#struct){ 2070 a: (#struct){ 2071 @@ -491,7 +545,15 @@ 2072 } 2073 } 2074 a: (_|_){ 2075 - // [structural cycle] p3.#U.#T.a.b.link: structural cycle 2076 + // [eval] p3.#U.#T.a.b.link: structural cycle 2077 + // p3.a.a: field not allowed: 2078 + // ./in.cue:246:5 2079 + // ./in.cue:247:3 2080 + a: (_|_){ 2081 + // [eval] p3.a.a: field not allowed: 2082 + // ./in.cue:246:5 2083 + // ./in.cue:247:3 2084 + } 2085 } 2086 } 2087 p4: (struct){ 2088 @@ -532,11 +594,17 @@ 2089 } 2090 a: (_|_){ 2091 // [structural cycle] 2092 - a: (#list){ 2093 - 0: (struct){ 2094 - link: (struct){ 2095 - a: (#list){ 2096 - 0: (struct){ 2097 + a: (_|_){ 2098 + // [structural cycle] 2099 + 0: (_|_){ 2100 + // [structural cycle] 2101 + link: (_|_){ 2102 + // [structural cycle] 2103 + a: (_|_){ 2104 + // [structural cycle] 2105 + 0: (_|_){ 2106 + // [structural cycle] 2107 + link: ~(p5.#T) 2108 } 2109 } 2110 } 2111 @@ -545,7 +613,7 @@ 2112 } 2113 } 2114 p6: (_|_){ 2115 - // [structural cycle] 2116 + // [eval] 2117 #S: (#struct){ 2118 #T: (#struct){ 2119 a: (list){ 2120 @@ -568,7 +636,15 @@ 2121 } 2122 } 2123 a: (_|_){ 2124 - // [structural cycle] p6.#U.#T.a.0.link: structural cycle 2125 + // [eval] p6.#U.#T.a.0.link: structural cycle 2126 + // p6.a.a: field not allowed: 2127 + // ./in.cue:285:5 2128 + // ./in.cue:286:3 2129 + a: (_|_){ 2130 + // [eval] p6.a.a: field not allowed: 2131 + // ./in.cue:285:5 2132 + // ./in.cue:286:3 2133 + } 2134 } 2135 } 2136 c1: (_|_){ 2137 @@ -578,12 +654,7 @@ 2138 b: (struct){ 2139 } 2140 c: (_|_){ 2141 - // [structural cycle] 2142 - b: (struct){ 2143 - } 2144 - c: (_|_){ 2145 - // [structural cycle] c1.a.c.c: structural cycle 2146 - } 2147 + // [structural cycle] c1.a.c: structural cycle 2148 } 2149 } 2150 } 2151 @@ -599,56 +670,30 @@ 2152 // [structural cycle] 2153 h: (int){ int } 2154 t: (_|_){ 2155 - // [structural cycle] d1.a.b.c.d.t: structural cycle 2156 - } 2157 - } 2158 - } 2159 - } 2160 - } 2161 - r: (_|_){ 2162 - // [structural cycle] d1.r: structural cycle: 2163 - // ./in.cue:299:26 2164 - } 2165 - x: (_|_){ 2166 - // [structural cycle] d1.a.b.c.d.t: structural cycle 2167 - } 2168 - } 2169 - d2: (_|_){ 2170 - // [structural cycle] 2171 - x: (_|_){ 2172 - // [structural cycle] 2173 - d: (_|_){ 2174 - // [structural cycle] 2175 - h: (int){ int } 2176 - t: (_|_){ 2177 - // [structural cycle] 2178 - } 2179 - } 2180 - } 2181 - r: (_|_){ 2182 - // [structural cycle] 2183 - c: (_|_){ 2184 - // [structural cycle] 2185 - d: (_|_){ 2186 - // [structural cycle] 2187 - h: (int){ int } 2188 - t: (_|_){ 2189 - // [structural cycle] d2.r.c.d.t: structural cycle 2190 - } 2191 - } 2192 - } 2193 - } 2194 - a: (struct){ 2195 - b: (struct){ 2196 - c: (_|_){ 2197 - // [structural cycle] 2198 - d: (_|_){ 2199 - // [structural cycle] 2200 - h: (int){ int } 2201 - t: (_|_){ 2202 - // [structural cycle] d2.a.b.c.d.t: structural cycle 2203 - } 2204 - } 2205 + // [structural cycle] d1.r: structural cycle 2206 + } 2207 + } 2208 + } 2209 + } 2210 + } 2211 + r: (_|_){ 2212 + // [structural cycle] d1.r: structural cycle 2213 + } 2214 + x: (_|_){ 2215 + // [structural cycle] d1.r: structural cycle 2216 + } 2217 + } 2218 + d2: (struct){ 2219 + x: ~(d2.a.b.c) 2220 + r: (struct){ 2221 + c: (_|_){ 2222 + // [cycle] d2.a.b.c: mutual dependency 2223 + } 2224 + } 2225 + a: (struct){ 2226 + b: (struct){ 2227 + c: (_|_){ 2228 + // [cycle] d2.a.b.c: mutual dependency 2229 } 2230 } 2231 } 2232 @@ -655,31 +700,41 @@ 2233 } 2234 d3: (_|_){ 2235 // [structural cycle] 2236 - config: (struct){ 2237 - a: (struct){ 2238 - b: (struct){ 2239 - c: (null){ null } 2240 - } 2241 - } 2242 - indirect: (null){ null } 2243 + config: (_|_){ 2244 + // [structural cycle] 2245 + a: (_|_){ 2246 + // [structural cycle] 2247 + b: (_|_){ 2248 + // [structural cycle] 2249 + c: (_|_){ 2250 + // [structural cycle] d3.config.0: structural cycle: 2251 + // ./in.cue:315:13 2252 + } 2253 + } 2254 + } 2255 + indirect: (_|_){ 2256 + // [structural cycle] d3.config.0: structural cycle: 2257 + // ./in.cue:315:13 2258 + } 2259 i: (int){ |(*(int){ 1 }, (int){ int }) } 2260 } 2261 x: (_|_){ 2262 // [structural cycle] 2263 - a: (_|_){ 2264 - // [structural cycle] 2265 - b: (_|_){ 2266 - // [structural cycle] 2267 - c: (_|_){ 2268 - // [structural cycle] d3.x.a.b.c: structural cycle 2269 - } 2270 - } 2271 - } 2272 - indirect: (_|_){ 2273 - // [structural cycle] d3.x.indirect: structural cycle: 2274 - // ./in.cue:314:12 2275 - } 2276 i: (int){ 0 } 2277 + a: (_|_){ 2278 + // [structural cycle] 2279 + b: (_|_){ 2280 + // [structural cycle] 2281 + c: (_|_){ 2282 + // [structural cycle] d3.x.0: structural cycle: 2283 + // ./in.cue:315:13 2284 + } 2285 + } 2286 + } 2287 + indirect: (_|_){ 2288 + // [structural cycle] d3.x.0: structural cycle: 2289 + // ./in.cue:315:13 2290 + } 2291 } 2292 } 2293 shortPathFail: (_|_){ 2294 @@ -696,9 +751,7 @@ 2295 // [structural cycle] 2296 t1: (struct){ 2297 #Foo: (#struct){ 2298 - ref: ((null|struct)){ |((null){ null }, (#struct){ 2299 - ref: (null){ null } 2300 - }) } 2301 + ref: (null){ null } 2302 } 2303 } 2304 t2: (_|_){ 2305 @@ -706,10 +759,7 @@ 2306 Foo: (_|_){ 2307 // [structural cycle] 2308 ref: (_|_){ 2309 - // [structural cycle] 2310 - ref: (_|_){ 2311 - // [structural cycle] shortPathFail.elipsis.t2.Foo.ref.ref: structural cycle 2312 - } 2313 + // [structural cycle] shortPathFail.elipsis.t2.Foo.ref: structural cycle 2314 } 2315 } 2316 } 2317 @@ -740,7 +790,8 @@ 2318 schema: (_|_){ 2319 // [structural cycle] 2320 next: (_|_){ 2321 - // [structural cycle] withLetFail.schema.next: structural cycle 2322 + // [structural cycle] withLetFail._schema_1: structural cycle: 2323 + // ./in.cue:360:17 2324 } 2325 } 2326 let _schema_1#1 = (_|_){ 2327 @@ -801,11 +852,12 @@ 2328 // [eval] e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 2329 // ./in.cue:390:5 2330 // ./in.cue:391:5 2331 - c: (_|_){ 2332 - // [structural cycle] e3.a.c: structural cycle 2333 - } 2334 - 0: (_|_){ 2335 - // [structural cycle] e3.a.c: structural cycle 2336 + // e3.a.c: structural cycle 2337 + c: (_|_){ 2338 + // [structural cycle] e3.a.c: structural cycle 2339 + } 2340 + 0: (_|_){ 2341 + // [structural cycle] e3.a.0: structural cycle 2342 } 2343 } 2344 b: (_|_){ 2345 @@ -812,11 +864,12 @@ 2346 // [eval] e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 2347 // ./in.cue:393:5 2348 // ./in.cue:394:5 2349 - c: (_|_){ 2350 - // [structural cycle] e3.b.c: structural cycle 2351 - } 2352 - 0: (_|_){ 2353 - // [structural cycle] e3.b.c: structural cycle 2354 + // e3.b.c: structural cycle 2355 + c: (_|_){ 2356 + // [structural cycle] e3.b.c: structural cycle 2357 + } 2358 + 0: (_|_){ 2359 + // [structural cycle] e3.b.0: structural cycle 2360 } 2361 } 2362 } 2363 @@ -825,41 +878,51 @@ 2364 a: (_|_){ 2365 // [eval] 2366 0: (_|_){ 2367 - // [eval] e4.a.0: 4 errors in empty disjunction: 2368 - // e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2369 - // ./in.cue:398:10 2370 - // ./in.cue:399:6 2371 - // e4.a.0.0: 2 errors in empty disjunction: 2372 - // e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 2373 - // ./in.cue:399:5 2374 + // [eval] e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2375 + // ./in.cue:398:10 2376 + // ./in.cue:399:6 2377 + // e4.a.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 2378 + // ./in.cue:399:6 2379 // ./in.cue:399:7 2380 // e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2381 - // ./in.cue:398:6 2382 - // ./in.cue:398:10 2383 - // ./in.cue:399:6 2384 - 0: (struct){ 2385 - c: (int){ 1 } 2386 - } 2387 - } 2388 - } 2389 - b: (_|_){ 2390 - // [eval] 2391 - 0: (_|_){ 2392 - // [eval] e4.b.0: 4 errors in empty disjunction: 2393 - // e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2394 - // ./in.cue:401:6 2395 - // ./in.cue:402:10 2396 - // e4.b.0.0: 2 errors in empty disjunction: 2397 - // e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 2398 - // ./in.cue:401:7 2399 - // ./in.cue:402:5 2400 + // ./in.cue:398:10 2401 + // ./in.cue:399:6 2402 + // e4.a.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 2403 + // ./in.cue:399:6 2404 + // ./in.cue:399:7 2405 + // e4.a.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2406 + // ./in.cue:398:10 2407 + // ./in.cue:399:6 2408 + // e4.a.0.0.0: structural cycle 2409 + // e4.a.0.0: cannot combine regular field "c" with [1,{c:1} & (a|{}) & [{c:1}]]: 2410 + // ./in.cue:399:11 2411 + // e4.a.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 2412 + // ./in.cue:399:11 2413 + } 2414 + } 2415 + b: (_|_){ 2416 + // [eval] 2417 + 0: (_|_){ 2418 + // [eval] e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2419 + // ./in.cue:401:6 2420 + // ./in.cue:402:10 2421 + // e4.b.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 2422 + // ./in.cue:401:6 2423 + // ./in.cue:401:7 2424 // e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2425 // ./in.cue:401:6 2426 - // ./in.cue:402:6 2427 - // ./in.cue:402:10 2428 - 0: (struct){ 2429 - c: (int){ 1 } 2430 - } 2431 + // ./in.cue:402:10 2432 + // e4.b.0.0.0: conflicting values [{c:1}] and {c:1} (mismatched types list and struct): 2433 + // ./in.cue:401:6 2434 + // ./in.cue:401:7 2435 + // e4.b.0.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2436 + // ./in.cue:401:6 2437 + // ./in.cue:402:10 2438 + // e4.b.0.0.0: structural cycle 2439 + // e4.b.0.0: cannot combine regular field "c" with [1,{c:1} & [{c:1}] & (b|{})]: 2440 + // ./in.cue:401:11 2441 + // e4.b.0.0.0: cannot combine regular field "c" with [1,{c:1}]: 2442 + // ./in.cue:401:11 2443 } 2444 } 2445 } 2446 @@ -882,19 +945,14 @@ 2447 y: (_|_){ 2448 // [eval] 2449 0: (_|_){ 2450 - // [eval] nestedList.v1e.y.0: 4 errors in empty disjunction: 2451 - // nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2452 + // [eval] nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2453 // ./in.cue:416:11 2454 // ./in.cue:417:11 2455 - // nestedList.v1e.y.0.0: 2 errors in empty disjunction: 2456 // nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 2457 // ./in.cue:416:11 2458 // ./in.cue:417:12 2459 - // nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 2460 - 0: (#list){ 2461 - 0: (int){ 2 } 2462 - } 2463 - 1: (int){ 1 } 2464 + // nestedList.v1e.y.0.0: incompatible list lengths (1 and 2): 2465 + // ./in.cue:416:6 2466 } 2467 1: (int){ 1 } 2468 } 2469 @@ -904,19 +962,14 @@ 2470 y: (_|_){ 2471 // [eval] 2472 0: (_|_){ 2473 - // [eval] nestedList.v2e.y.0: 4 errors in empty disjunction: 2474 - // nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2475 + // [eval] nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2476 // ./in.cue:421:11 2477 // ./in.cue:422:11 2478 - // nestedList.v2e.y.0.0: 2 errors in empty disjunction: 2479 // nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 2480 // ./in.cue:421:12 2481 // ./in.cue:422:11 2482 - // nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 2483 - 0: (#list){ 2484 - 0: (int){ 2 } 2485 - } 2486 - 1: (int){ 1 } 2487 + // nestedList.v2e.y.0.0: incompatible list lengths (1 and 2): 2488 + // ./in.cue:422:6 2489 } 2490 1: (int){ 1 } 2491 } 2492 @@ -1020,9 +1073,7 @@ 2493 // [structural cycle] 2494 f: (_|_){ 2495 // [structural cycle] 2496 - h: (_|_){ 2497 - // [structural cycle] z1.z.f.h: structural cycle 2498 - } 2499 + h: ~(z1.z.g) 2500 } 2501 g: (_|_){ 2502 // [structural cycle] 2503 @@ -1169,19 +1220,19 @@ 2504 } 2505 } 2506 n4: (struct){ 2507 - a: (struct){ 2508 - b: (int){ int } 2509 - } 2510 - x: (struct){ 2511 - a: (struct){ 2512 - b: (int){ int } 2513 - } 2514 - y: (struct){ 2515 + x: (struct){ 2516 + y: (struct){ 2517 + z: (int){ int } 2518 a: (struct){ 2519 b: (int){ int } 2520 } 2521 - z: (int){ int } 2522 - } 2523 + } 2524 + a: (struct){ 2525 + b: (int){ int } 2526 + } 2527 + } 2528 + a: (struct){ 2529 + b: (int){ int } 2530 } 2531 } 2532 } 2533 -- diff/todo/p1 -- 2534 d2.x: reports mutual dependency, instead of structural cycle. 2535 Reducer: 2536 x: a.c 2537 r: a 2538 a: c: r 2539 -- diff/todo/p2 -- 2540 TODO(share): fix the following bug once we have structure sharing. 2541 d3.config: should structural cycle be reported? 2542 p3.a.a: field not allowed incorrect? 2543 -- diff/todo/p3 -- 2544 n4: Reordering. 2545 b12b: reported at correct level, but investigate if it is not processing 2546 too deep anyway. 2547 -- diff/explanation -- 2548 Structural cycles are reported in all chains. compared to old implementation. 2549 d3.config: reports cycle at correct position. 2550 b4.b: Structural error converted to eval error: there is both a structural and 2551 eval error at this field. The newly reported error is correct. 2552 b7.b.0.0: structural cycle nested one too deep: the eval error takes precedence. 2553 The cycle is reported at the correct level according to the spec. 2554 b10.c.d: position now allows b: string as well. This is correct. This is mostly 2555 a representational issue, as the evaluator would still accept such values 2556 when merged, but it is still useful. 2557 -- out/eval -- 2558 Errors: 2559 a1.f.0: structural cycle 2560 a3.f.g: structural cycle 2561 b12b.#list.tail: structural cycle 2562 b13.root.a.0.0: structural cycle 2563 b14.root.b.1.1: structural cycle 2564 b4.cond1.x.y.0: structural cycle 2565 b4.cond2.x.y.0: structural cycle 2566 b4.x.y.0: structural cycle 2567 b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 2568 ./in.cue:92:5 2569 ./in.cue:92:13 2570 ./in.cue:92:14 2571 ./in.cue:93:9 2572 b6.b.a.0.0: structural cycle 2573 b6.x.a.0: structural cycle 2574 b7.a.0: structural cycle 2575 c1.a.c.c: structural cycle 2576 d1.a.b.c.d.t: structural cycle 2577 d2.a.b.c.d.t: structural cycle 2578 d2.r.c.d.t: structural cycle 2579 d3.x.a.b.c: structural cycle 2580 e1.a.c: structural cycle 2581 e1.b.c: structural cycle 2582 e2.a.c: structural cycle 2583 e2.b.c: structural cycle 2584 e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 2585 ./in.cue:390:5 2586 ./in.cue:391:5 2587 e3.a.c: structural cycle 2588 e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 2589 ./in.cue:393:5 2590 ./in.cue:394:5 2591 e3.b.c: structural cycle 2592 e4.a.0: 4 errors in empty disjunction: 2593 e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2594 ./in.cue:398:10 2595 ./in.cue:399:6 2596 e4.a.0.0: 2 errors in empty disjunction: 2597 e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 2598 ./in.cue:399:5 2599 ./in.cue:399:7 2600 e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2601 ./in.cue:398:6 2602 ./in.cue:398:10 2603 ./in.cue:399:6 2604 e4.b.0: 4 errors in empty disjunction: 2605 e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2606 ./in.cue:401:6 2607 ./in.cue:402:10 2608 e4.b.0.0: 2 errors in empty disjunction: 2609 e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 2610 ./in.cue:401:7 2611 ./in.cue:402:5 2612 e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 2613 ./in.cue:401:6 2614 ./in.cue:402:6 2615 ./in.cue:402:10 2616 nestedList.v1e.y.0: 4 errors in empty disjunction: 2617 nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2618 ./in.cue:416:11 2619 ./in.cue:417:11 2620 nestedList.v1e.y.0.0: 2 errors in empty disjunction: 2621 nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 2622 ./in.cue:416:11 2623 ./in.cue:417:12 2624 nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 2625 nestedList.v2e.y.0: 4 errors in empty disjunction: 2626 nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 2627 ./in.cue:421:11 2628 ./in.cue:422:11 2629 nestedList.v2e.y.0.0: 2 errors in empty disjunction: 2630 nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 2631 ./in.cue:421:12 2632 ./in.cue:422:11 2633 nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 2634 p2.#T.a.b.link: structural cycle 2635 p3.#U.#T.a.b.link: structural cycle 2636 p5.#T.a.0.link: structural cycle 2637 p6.#U.#T.a.0.link: structural cycle 2638 patternFail.issue2374.a.b: structural cycle 2639 shortPathFail.elipsis.t2.Foo.ref.ref: structural cycle 2640 withLetFail.schema.next: structural cycle 2641 z1.z.f.h: structural cycle 2642 z1.z.g.h: structural cycle 2643 d1.r: structural cycle: 2644 ./in.cue:299:26 2645 d3.x.indirect: structural cycle: 2646 ./in.cue:314:12 2647 2648 Result: 2649 (_|_){ 2650 // [eval] 2651 a1: (_|_){ 2652 // [structural cycle] 2653 f: (_|_){ 2654 // [structural cycle] 2655 0: (_|_){ 2656 // [structural cycle] a1.f.0: structural cycle 2657 } 2658 } 2659 } 2660 a2: (struct){ 2661 f: (_){ _ } 2662 } 2663 a3: (_|_){ 2664 // [structural cycle] 2665 f: (_|_){ 2666 // [structural cycle] 2667 g: (_|_){ 2668 // [structural cycle] a3.f.g: structural cycle 2669 } 2670 } 2671 } 2672 a4: (struct){ 2673 a: (#list){ 2674 0: (int){ int } 2675 } 2676 } 2677 a5: (struct){ 2678 a: (struct){ 2679 b: (int){ int } 2680 } 2681 } 2682 a6: (struct){ 2683 a: (_){ |((_){ _ }, (int){ int }) } 2684 } 2685 a7: (struct){ 2686 a: (string){ "foo" } 2687 b: (struct){ 2688 x: (struct){ 2689 x: (string){ "foo" } 2690 y: (int){ 3 } 2691 } 2692 y: (string){ "foo" } 2693 } 2694 c: (struct){ 2695 x: (string){ "foo" } 2696 y: (int){ 3 } 2697 } 2698 } 2699 b1: (struct){ 2700 b: (#list){ 2701 0: (int){ 1 } 2702 } 2703 a: (#list){ 2704 0: (int){ int } 2705 } 2706 } 2707 b2: (struct){ 2708 a: (#list){ 2709 0: (int){ int } 2710 } 2711 b: (#list){ 2712 0: (int){ 1 } 2713 } 2714 } 2715 b3: (struct){ 2716 x: (struct){ 2717 a: (#list){ 2718 0: (int){ int } 2719 } 2720 } 2721 b: (struct){ 2722 a: (#list){ 2723 0: (int){ 1 } 2724 } 2725 } 2726 } 2727 b4: (_|_){ 2728 // [structural cycle] 2729 b: (_|_){ 2730 // [structural cycle] 2731 0: (_|_){ 2732 // [structural cycle] b4.x.y.0: structural cycle 2733 } 2734 } 2735 x: (_|_){ 2736 // [structural cycle] 2737 y: (_|_){ 2738 // [structural cycle] 2739 0: (_|_){ 2740 // [structural cycle] b4.x.y.0: structural cycle 2741 } 2742 } 2743 } 2744 cond1: (_|_){ 2745 // [structural cycle] 2746 b: (#list){ 2747 _z: (bool){ false } 2748 0: (int){ 1 } 2749 } 2750 x: (_|_){ 2751 // [structural cycle] 2752 y: (_|_){ 2753 // [structural cycle] 2754 _z: (bool){ |(*(bool){ true }, (bool){ bool }) } 2755 0: (_|_){ 2756 // [structural cycle] b4.cond1.x.y.0: structural cycle 2757 } 2758 } 2759 } 2760 } 2761 cond2: (_|_){ 2762 // [structural cycle] 2763 x: (_|_){ 2764 // [structural cycle] 2765 y: (_|_){ 2766 // [structural cycle] 2767 _z: (bool){ |(*(bool){ true }, (bool){ bool }) } 2768 0: (_|_){ 2769 // [structural cycle] b4.cond2.x.y.0: structural cycle 2770 } 2771 } 2772 } 2773 b: (_|_){ 2774 // [structural cycle] b4.cond2.x.y.0: structural cycle 2775 } 2776 } 2777 } 2778 b5: (struct){ 2779 b: (struct){ 2780 a: (#list){ 2781 0: (int){ 1 } 2782 } 2783 } 2784 x: (struct){ 2785 y: (struct){ 2786 a: (#list){ 2787 0: (int){ int } 2788 } 2789 } 2790 } 2791 } 2792 b6: (_|_){ 2793 // [eval] 2794 b: (_|_){ 2795 // [eval] 2796 a: (_|_){ 2797 // [eval] 2798 0: (_|_){ 2799 // [eval] b6.b.a.0: conflicting values 1 and [1] (mismatched types int and list): 2800 // ./in.cue:92:5 2801 // ./in.cue:92:13 2802 // ./in.cue:92:14 2803 // ./in.cue:93:9 2804 0: (_|_){ 2805 // [structural cycle] b6.b.a.0.0: structural cycle 2806 } 2807 } 2808 } 2809 } 2810 x: (_|_){ 2811 // [structural cycle] 2812 a: (_|_){ 2813 // [structural cycle] 2814 0: (_|_){ 2815 // [structural cycle] b6.x.a.0: structural cycle 2816 } 2817 } 2818 } 2819 } 2820 b7: (_|_){ 2821 // [structural cycle] 2822 b: (_|_){ 2823 // [structural cycle] 2824 0: (_|_){ 2825 // [structural cycle] b7.a.0: structural cycle 2826 } 2827 } 2828 a: (_|_){ 2829 // [structural cycle] 2830 0: (_|_){ 2831 // [structural cycle] b7.a.0: structural cycle 2832 } 2833 } 2834 } 2835 b8: (struct){ 2836 x: (struct){ 2837 f: (string){ string } 2838 } 2839 a: (struct){ 2840 f: (string){ string } 2841 } 2842 b: (string){ string } 2843 } 2844 b9: (struct){ 2845 #a: ((string|struct)){ |((string){ string }, (#struct){ 2846 ref: (string){ string } 2847 }) } 2848 #b: (#struct){ 2849 c: (#list){ 2850 0: ((string|struct)){ |((string){ string }, (#struct){ 2851 ref: (string){ string } 2852 }) } 2853 1: ((string|struct)){ |((string){ string }, (#struct){ 2854 ref: (string){ string } 2855 }) } 2856 2: ((string|struct)){ |((string){ string }, (#struct){ 2857 ref: (string){ string } 2858 }) } 2859 } 2860 } 2861 #ref: (#struct){ 2862 ref: (string){ string } 2863 } 2864 x: (#struct){ |((#struct){ 2865 c: (#list){ 2866 0: ((string|struct)){ |((string){ string }, (#struct){ 2867 ref: (string){ string } 2868 }) } 2869 1: ((string|struct)){ |((string){ string }, (#struct){ 2870 ref: (string){ string } 2871 }) } 2872 2: ((string|struct)){ |((string){ string }, (#struct){ 2873 ref: (string){ string } 2874 }) } 2875 } 2876 }, (#struct){ 2877 ref: (string){ string } 2878 }) } 2879 } 2880 b10: (struct){ 2881 a: (#struct){ 2882 b: ((string|struct)){ |((string){ string }, (#struct){ 2883 d: (string){ string } 2884 }) } 2885 } 2886 c: (#struct){ 2887 d: (string){ string } 2888 } 2889 d: (struct){ 2890 d: (struct){ 2891 b: (string){ string } 2892 } 2893 } 2894 } 2895 b11: (struct){ 2896 #list: (#struct){ 2897 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 2898 tail: (null){ null } 2899 }) } 2900 } 2901 } 2902 b12: (struct){ 2903 #list: (#struct){ 2904 value: (int){ int } 2905 tail: (null){ null } 2906 sum: (int){ int } 2907 } 2908 list1: (#struct){ 2909 value: (int){ 1 } 2910 tail: (#struct){ 2911 value: (int){ 2 } 2912 tail: (#struct){ 2913 value: (int){ 3 } 2914 tail: (#struct){ 2915 value: (int){ 4 } 2916 tail: (null){ null } 2917 sum: (int){ 4 } 2918 } 2919 sum: (int){ 7 } 2920 } 2921 sum: (int){ 9 } 2922 } 2923 sum: (int){ 10 } 2924 } 2925 } 2926 b12b: (_|_){ 2927 // [structural cycle] 2928 #list: (_|_){ 2929 // [structural cycle] b12b.#list.tail: structural cycle 2930 } 2931 list1: (_|_){ 2932 // [structural cycle] b12b.#list.tail: structural cycle 2933 } 2934 } 2935 b13: (_|_){ 2936 // [structural cycle] 2937 root: (_|_){ 2938 // [structural cycle] 2939 a: (_|_){ 2940 // [structural cycle] 2941 0: (_|_){ 2942 // [structural cycle] 2943 0: (_|_){ 2944 // [structural cycle] b13.root.a.0.0: structural cycle 2945 } 2946 } 2947 } 2948 } 2949 } 2950 b14: (_|_){ 2951 // [structural cycle] 2952 root: (_|_){ 2953 // [structural cycle] 2954 a: (list){ 2955 } 2956 b: (_|_){ 2957 // [structural cycle] 2958 0: (list){ 2959 } 2960 1: (_|_){ 2961 // [structural cycle] 2962 0: (list){ 2963 } 2964 1: (_|_){ 2965 // [structural cycle] b14.root.b.1.1: structural cycle 2966 } 2967 } 2968 } 2969 } 2970 } 2971 b15: (struct){ 2972 root: (struct){ 2973 a: (struct){ 2974 } 2975 } 2976 } 2977 p1: (struct){ 2978 #T: (#struct){ 2979 a: (#struct){ 2980 } 2981 } 2982 a: (#struct){ 2983 a: (#struct){ 2984 one: (#struct){ 2985 link: (#struct){ 2986 a: (#struct){ 2987 two: (#struct){ 2988 link: (#struct){ 2989 a: (#struct){ 2990 } 2991 } 2992 } 2993 } 2994 } 2995 } 2996 } 2997 } 2998 } 2999 p2: (_|_){ 3000 // [structural cycle] 3001 #T: (_|_){ 3002 // [structural cycle] 3003 a: (_|_){ 3004 // [structural cycle] 3005 b: (_|_){ 3006 // [structural cycle] 3007 link: (_|_){ 3008 // [structural cycle] p2.#T.a.b.link: structural cycle 3009 } 3010 } 3011 } 3012 } 3013 a: (_|_){ 3014 // [structural cycle] 3015 a: (struct){ 3016 one: (struct){ 3017 link: (struct){ 3018 a: (struct){ 3019 two: (struct){ 3020 } 3021 } 3022 } 3023 } 3024 } 3025 } 3026 } 3027 p3: (_|_){ 3028 // [structural cycle] 3029 #S: (#struct){ 3030 #T: (#struct){ 3031 a: (#struct){ 3032 } 3033 } 3034 } 3035 #U: (_|_){ 3036 // [structural cycle] 3037 #T: (_|_){ 3038 // [structural cycle] 3039 a: (_|_){ 3040 // [structural cycle] 3041 b: (_|_){ 3042 // [structural cycle] 3043 link: (_|_){ 3044 // [structural cycle] p3.#U.#T.a.b.link: structural cycle 3045 } 3046 } 3047 } 3048 } 3049 } 3050 a: (_|_){ 3051 // [structural cycle] p3.#U.#T.a.b.link: structural cycle 3052 } 3053 } 3054 p4: (struct){ 3055 #T: (#struct){ 3056 a: (list){ 3057 } 3058 } 3059 a: (#struct){ 3060 a: (#list){ 3061 0: (#struct){ 3062 link: (#struct){ 3063 a: (#list){ 3064 0: (#struct){ 3065 link: (#struct){ 3066 a: (list){ 3067 } 3068 } 3069 } 3070 } 3071 } 3072 } 3073 } 3074 } 3075 } 3076 p5: (_|_){ 3077 // [structural cycle] 3078 #T: (_|_){ 3079 // [structural cycle] 3080 a: (_|_){ 3081 // [structural cycle] 3082 0: (_|_){ 3083 // [structural cycle] 3084 link: (_|_){ 3085 // [structural cycle] p5.#T.a.0.link: structural cycle 3086 } 3087 } 3088 } 3089 } 3090 a: (_|_){ 3091 // [structural cycle] 3092 a: (#list){ 3093 0: (struct){ 3094 link: (struct){ 3095 a: (#list){ 3096 0: (struct){ 3097 } 3098 } 3099 } 3100 } 3101 } 3102 } 3103 } 3104 p6: (_|_){ 3105 // [structural cycle] 3106 #S: (#struct){ 3107 #T: (#struct){ 3108 a: (list){ 3109 } 3110 } 3111 } 3112 #U: (_|_){ 3113 // [structural cycle] 3114 #T: (_|_){ 3115 // [structural cycle] 3116 a: (_|_){ 3117 // [structural cycle] 3118 0: (_|_){ 3119 // [structural cycle] 3120 link: (_|_){ 3121 // [structural cycle] p6.#U.#T.a.0.link: structural cycle 3122 } 3123 } 3124 } 3125 } 3126 } 3127 a: (_|_){ 3128 // [structural cycle] p6.#U.#T.a.0.link: structural cycle 3129 } 3130 } 3131 c1: (_|_){ 3132 // [structural cycle] 3133 a: (_|_){ 3134 // [structural cycle] 3135 b: (struct){ 3136 } 3137 c: (_|_){ 3138 // [structural cycle] 3139 b: (struct){ 3140 } 3141 c: (_|_){ 3142 // [structural cycle] c1.a.c.c: structural cycle 3143 } 3144 } 3145 } 3146 } 3147 d1: (_|_){ 3148 // [structural cycle] 3149 a: (_|_){ 3150 // [structural cycle] 3151 b: (_|_){ 3152 // [structural cycle] 3153 c: (_|_){ 3154 // [structural cycle] 3155 d: (_|_){ 3156 // [structural cycle] 3157 h: (int){ int } 3158 t: (_|_){ 3159 // [structural cycle] d1.a.b.c.d.t: structural cycle 3160 } 3161 } 3162 } 3163 } 3164 } 3165 r: (_|_){ 3166 // [structural cycle] d1.r: structural cycle: 3167 // ./in.cue:299:26 3168 } 3169 x: (_|_){ 3170 // [structural cycle] d1.a.b.c.d.t: structural cycle 3171 } 3172 } 3173 d2: (_|_){ 3174 // [structural cycle] 3175 x: (_|_){ 3176 // [structural cycle] 3177 d: (_|_){ 3178 // [structural cycle] 3179 h: (int){ int } 3180 t: (_|_){ 3181 // [structural cycle] 3182 } 3183 } 3184 } 3185 r: (_|_){ 3186 // [structural cycle] 3187 c: (_|_){ 3188 // [structural cycle] 3189 d: (_|_){ 3190 // [structural cycle] 3191 h: (int){ int } 3192 t: (_|_){ 3193 // [structural cycle] d2.r.c.d.t: structural cycle 3194 } 3195 } 3196 } 3197 } 3198 a: (struct){ 3199 b: (struct){ 3200 c: (_|_){ 3201 // [structural cycle] 3202 d: (_|_){ 3203 // [structural cycle] 3204 h: (int){ int } 3205 t: (_|_){ 3206 // [structural cycle] d2.a.b.c.d.t: structural cycle 3207 } 3208 } 3209 } 3210 } 3211 } 3212 } 3213 d3: (_|_){ 3214 // [structural cycle] 3215 config: (struct){ 3216 a: (struct){ 3217 b: (struct){ 3218 c: (null){ null } 3219 } 3220 } 3221 indirect: (null){ null } 3222 i: (int){ |(*(int){ 1 }, (int){ int }) } 3223 } 3224 x: (_|_){ 3225 // [structural cycle] 3226 a: (_|_){ 3227 // [structural cycle] 3228 b: (_|_){ 3229 // [structural cycle] 3230 c: (_|_){ 3231 // [structural cycle] d3.x.a.b.c: structural cycle 3232 } 3233 } 3234 } 3235 indirect: (_|_){ 3236 // [structural cycle] d3.x.indirect: structural cycle: 3237 // ./in.cue:314:12 3238 } 3239 i: (int){ 0 } 3240 } 3241 } 3242 shortPathFail: (_|_){ 3243 // [structural cycle] 3244 doubleRef: (struct){ 3245 a: (#struct){ 3246 Next: (null){ null } 3247 } 3248 #List: (#struct){ 3249 Next: (null){ null } 3250 } 3251 } 3252 elipsis: (_|_){ 3253 // [structural cycle] 3254 t1: (struct){ 3255 #Foo: (#struct){ 3256 ref: ((null|struct)){ |((null){ null }, (#struct){ 3257 ref: (null){ null } 3258 }) } 3259 } 3260 } 3261 t2: (_|_){ 3262 // [structural cycle] 3263 Foo: (_|_){ 3264 // [structural cycle] 3265 ref: (_|_){ 3266 // [structural cycle] 3267 ref: (_|_){ 3268 // [structural cycle] shortPathFail.elipsis.t2.Foo.ref.ref: structural cycle 3269 } 3270 } 3271 } 3272 } 3273 } 3274 comprehension: (struct){ 3275 #list: (#struct){ 3276 tail: ((null|struct)){ |(*(null){ null }, (#struct){ 3277 tail: (null){ null } 3278 }) } 3279 } 3280 } 3281 } 3282 patternFail: (_|_){ 3283 // [structural cycle] 3284 issue2374: (_|_){ 3285 // [structural cycle] 3286 a: (_|_){ 3287 // [structural cycle] 3288 r: (int){ 0 } 3289 b: (_|_){ 3290 // [structural cycle] patternFail.issue2374.a.b: structural cycle 3291 } 3292 } 3293 } 3294 } 3295 withLetFail: (_|_){ 3296 // [structural cycle] 3297 schema: (_|_){ 3298 // [structural cycle] 3299 next: (_|_){ 3300 // [structural cycle] withLetFail.schema.next: structural cycle 3301 } 3302 } 3303 let _schema_1#1 = (_|_){ 3304 // [structural cycle] withLetFail._schema_1: structural cycle: 3305 // ./in.cue:360:17 3306 } 3307 } 3308 listOptOK: (struct){ 3309 list: (struct){ 3310 head: (int){ int } 3311 tail?: (_|_){ 3312 // [structural cycle] listOptOK.list.tail: structural cycle 3313 } 3314 } 3315 a: (struct){ 3316 head: (int){ 3 } 3317 tail: (struct){ 3318 head: (int){ 2 } 3319 tail?: (_|_){ 3320 // [structural cycle] listOptOK.a.tail.tail: structural cycle 3321 } 3322 } 3323 } 3324 } 3325 e1: (_|_){ 3326 // [structural cycle] 3327 a: (_|_){ 3328 // [structural cycle] 3329 c: (_|_){ 3330 // [structural cycle] e1.a.c: structural cycle 3331 } 3332 } 3333 b: (_|_){ 3334 // [structural cycle] 3335 c: (_|_){ 3336 // [structural cycle] e1.b.c: structural cycle 3337 } 3338 } 3339 } 3340 e2: (_|_){ 3341 // [structural cycle] 3342 a: (_|_){ 3343 // [structural cycle] 3344 c: (_|_){ 3345 // [structural cycle] e2.a.c: structural cycle 3346 } 3347 } 3348 b: (_|_){ 3349 // [structural cycle] 3350 c: (_|_){ 3351 // [structural cycle] e2.b.c: structural cycle 3352 } 3353 } 3354 } 3355 e3: (_|_){ 3356 // [eval] 3357 a: (_|_){ 3358 // [eval] e3.a: conflicting values [a] and {c:a} (mismatched types list and struct): 3359 // ./in.cue:390:5 3360 // ./in.cue:391:5 3361 c: (_|_){ 3362 // [structural cycle] e3.a.c: structural cycle 3363 } 3364 0: (_|_){ 3365 // [structural cycle] e3.a.c: structural cycle 3366 } 3367 } 3368 b: (_|_){ 3369 // [eval] e3.b: conflicting values [b] and {c:b} (mismatched types list and struct): 3370 // ./in.cue:393:5 3371 // ./in.cue:394:5 3372 c: (_|_){ 3373 // [structural cycle] e3.b.c: structural cycle 3374 } 3375 0: (_|_){ 3376 // [structural cycle] e3.b.c: structural cycle 3377 } 3378 } 3379 } 3380 e4: (_|_){ 3381 // [eval] 3382 a: (_|_){ 3383 // [eval] 3384 0: (_|_){ 3385 // [eval] e4.a.0: 4 errors in empty disjunction: 3386 // e4.a.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 3387 // ./in.cue:398:10 3388 // ./in.cue:399:6 3389 // e4.a.0.0: 2 errors in empty disjunction: 3390 // e4.a.0.0: conflicting values [[{c:1}]] and {c:1} (mismatched types list and struct): 3391 // ./in.cue:399:5 3392 // ./in.cue:399:7 3393 // e4.a.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 3394 // ./in.cue:398:6 3395 // ./in.cue:398:10 3396 // ./in.cue:399:6 3397 0: (struct){ 3398 c: (int){ 1 } 3399 } 3400 } 3401 } 3402 b: (_|_){ 3403 // [eval] 3404 0: (_|_){ 3405 // [eval] e4.b.0: 4 errors in empty disjunction: 3406 // e4.b.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 3407 // ./in.cue:401:6 3408 // ./in.cue:402:10 3409 // e4.b.0.0: 2 errors in empty disjunction: 3410 // e4.b.0.0: conflicting values [(b|{})] and {c:1} (mismatched types list and struct): 3411 // ./in.cue:401:7 3412 // ./in.cue:402:5 3413 // e4.b.0.0: conflicting values [{c:1}] and {} (mismatched types list and struct): 3414 // ./in.cue:401:6 3415 // ./in.cue:402:6 3416 // ./in.cue:402:10 3417 0: (struct){ 3418 c: (int){ 1 } 3419 } 3420 } 3421 } 3422 } 3423 e5: (struct){ 3424 a: (struct){ 3425 c: (int){ int } 3426 } 3427 b: (struct){ 3428 c: (int){ int } 3429 } 3430 } 3431 nestedList: (_|_){ 3432 // [eval] 3433 v1e: (_|_){ 3434 // [eval] 3435 x: (#list){ 3436 0: (int){ int } 3437 1: (int){ 1 } 3438 } 3439 y: (_|_){ 3440 // [eval] 3441 0: (_|_){ 3442 // [eval] nestedList.v1e.y.0: 4 errors in empty disjunction: 3443 // nestedList.v1e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 3444 // ./in.cue:416:11 3445 // ./in.cue:417:11 3446 // nestedList.v1e.y.0.0: 2 errors in empty disjunction: 3447 // nestedList.v1e.y.0.0: conflicting values int and [2] (mismatched types int and list): 3448 // ./in.cue:416:11 3449 // ./in.cue:417:12 3450 // nestedList.v1e.y.0.0: incompatible list lengths (1 and 2) 3451 0: (#list){ 3452 0: (int){ 2 } 3453 } 3454 1: (int){ 1 } 3455 } 3456 1: (int){ 1 } 3457 } 3458 } 3459 v2e: (_|_){ 3460 // [eval] 3461 y: (_|_){ 3462 // [eval] 3463 0: (_|_){ 3464 // [eval] nestedList.v2e.y.0: 4 errors in empty disjunction: 3465 // nestedList.v2e.y.0: conflicting values int and [[2],1] (mismatched types int and list): 3466 // ./in.cue:421:11 3467 // ./in.cue:422:11 3468 // nestedList.v2e.y.0.0: 2 errors in empty disjunction: 3469 // nestedList.v2e.y.0.0: conflicting values int and [2] (mismatched types int and list): 3470 // ./in.cue:421:12 3471 // ./in.cue:422:11 3472 // nestedList.v2e.y.0.0: incompatible list lengths (1 and 2) 3473 0: (#list){ 3474 0: (int){ 2 } 3475 } 3476 1: (int){ 1 } 3477 } 3478 1: (int){ 1 } 3479 } 3480 x: (#list){ 3481 0: (int){ int } 3482 1: (int){ 1 } 3483 } 3484 } 3485 v1: (struct){ 3486 x: (#list){ 3487 0: (int){ int } 3488 1: (int){ 1 } 3489 } 3490 y: (#list){ 3491 0: (#list){ 3492 0: (#list){ 3493 0: (int){ 2 } 3494 1: (int){ 1 } 3495 } 3496 1: (int){ 1 } 3497 } 3498 1: (int){ 1 } 3499 } 3500 } 3501 v2: (struct){ 3502 y: (#list){ 3503 0: (#list){ 3504 0: (#list){ 3505 0: (int){ 2 } 3506 1: (int){ 1 } 3507 } 3508 1: (int){ 1 } 3509 } 3510 1: (int){ 1 } 3511 } 3512 x: (#list){ 3513 0: (int){ int } 3514 1: (int){ 1 } 3515 } 3516 } 3517 } 3518 v3: (struct){ 3519 list: (struct){ 3520 head: (int){ int } 3521 tail: (null){ null } 3522 } 3523 myList: (struct){ 3524 head: (int){ 2 } 3525 tail: (struct){ 3526 head: (int){ 3 } 3527 tail: (struct){ 3528 head: (int){ 4 } 3529 tail: (null){ null } 3530 } 3531 } 3532 } 3533 } 3534 v4: (struct){ 3535 list: (struct){ 3536 head: (int){ int } 3537 tail: (int){ 1 } 3538 } 3539 myList: (struct){ 3540 head: (int){ 2 } 3541 tail: (struct){ 3542 head: (int){ 3 } 3543 tail: (int){ 1 } 3544 } 3545 } 3546 } 3547 v5: (struct){ 3548 list: (struct){ 3549 head: (int){ int } 3550 tail: (struct){ 3551 } 3552 } 3553 myList: (struct){ 3554 head: (int){ 2 } 3555 tail: (struct){ |((struct){ 3556 head: (int){ 3 } 3557 tail: (struct){ 3558 } 3559 }, (struct){ 3560 head: (int){ 3 } 3561 }) } 3562 } 3563 } 3564 z1: (_|_){ 3565 // [structural cycle] 3566 y: (struct){ 3567 f: (struct){ 3568 h: (_){ _ } 3569 } 3570 g: (_){ _ } 3571 } 3572 x: (struct){ 3573 f: (_){ _ } 3574 g: (_){ _ } 3575 } 3576 z: (_|_){ 3577 // [structural cycle] 3578 f: (_|_){ 3579 // [structural cycle] 3580 h: (_|_){ 3581 // [structural cycle] z1.z.f.h: structural cycle 3582 } 3583 } 3584 g: (_|_){ 3585 // [structural cycle] 3586 h: (_|_){ 3587 // [structural cycle] z1.z.g.h: structural cycle 3588 } 3589 } 3590 } 3591 } 3592 crossRefNoCycle: (struct){ 3593 t1: (struct){ 3594 T: (struct){ 3595 x: (_){ _ } 3596 y: (_){ _ } 3597 } 3598 C: (struct){ 3599 x: (struct){ 3600 x: (_){ _ } 3601 y: (_){ _ } 3602 } 3603 y: (struct){ 3604 x: (_){ _ } 3605 y: (_){ _ } 3606 } 3607 } 3608 } 3609 t2: (struct){ 3610 T: (struct){ 3611 x: (_){ _ } 3612 y: (_){ _ } 3613 } 3614 C: (struct){ 3615 x: (struct){ 3616 x: (_){ _ } 3617 y: (_){ _ } 3618 } 3619 y: (struct){ 3620 x: (_){ _ } 3621 y: (_){ _ } 3622 } 3623 } 3624 } 3625 t3: (struct){ 3626 T: (struct){ 3627 x: (_){ _ } 3628 y: (_){ _ } 3629 z: (_){ _ } 3630 } 3631 C: (struct){ 3632 x: (struct){ 3633 x: (_){ _ } 3634 y: (_){ _ } 3635 z: (_){ _ } 3636 } 3637 y: (struct){ 3638 x: (_){ _ } 3639 y: (_){ _ } 3640 z: (_){ _ } 3641 } 3642 z: (struct){ 3643 x: (_){ _ } 3644 y: (_){ _ } 3645 z: (_){ _ } 3646 } 3647 } 3648 } 3649 t4: (struct){ 3650 T: (struct){ 3651 x: (_){ _ } 3652 y: (_){ _ } 3653 z: (_){ _ } 3654 } 3655 C: (struct){ 3656 x: (struct){ 3657 x: (struct){ 3658 x: (_){ _ } 3659 y: (_){ _ } 3660 z: (_){ _ } 3661 } 3662 y: (struct){ 3663 x: (_){ _ } 3664 y: (_){ _ } 3665 z: (_){ _ } 3666 } 3667 z: (struct){ 3668 x: (_){ _ } 3669 y: (_){ _ } 3670 z: (_){ _ } 3671 } 3672 } 3673 y: (struct){ 3674 x: (struct){ 3675 x: (_){ _ } 3676 y: (_){ _ } 3677 z: (_){ _ } 3678 } 3679 y: (struct){ 3680 x: (_){ _ } 3681 y: (_){ _ } 3682 z: (_){ _ } 3683 } 3684 z: (struct){ 3685 x: (_){ _ } 3686 y: (_){ _ } 3687 z: (_){ _ } 3688 } 3689 } 3690 z: (struct){ 3691 x: (struct){ 3692 x: (_){ _ } 3693 y: (_){ _ } 3694 z: (_){ _ } 3695 } 3696 y: (struct){ 3697 x: (_){ _ } 3698 y: (_){ _ } 3699 z: (_){ _ } 3700 } 3701 z: (struct){ 3702 x: (_){ _ } 3703 y: (_){ _ } 3704 z: (_){ _ } 3705 } 3706 } 3707 } 3708 } 3709 } 3710 n1: (struct){ 3711 a: (struct){ 3712 b: (int){ int } 3713 } 3714 } 3715 n2: (struct){ 3716 a: (struct){ 3717 b: (int){ int } 3718 a: (struct){ 3719 b: (int){ int } 3720 } 3721 } 3722 } 3723 n3: (struct){ 3724 a: (struct){ 3725 b: (int){ int } 3726 } 3727 } 3728 n4: (struct){ 3729 a: (struct){ 3730 b: (int){ int } 3731 } 3732 x: (struct){ 3733 a: (struct){ 3734 b: (int){ int } 3735 } 3736 y: (struct){ 3737 a: (struct){ 3738 b: (int){ int } 3739 } 3740 z: (int){ int } 3741 } 3742 } 3743 } 3744 } 3745 -- out/compile -- 3746 --- in.cue 3747 { 3748 a1: { 3749 f: [ 3750 〈1;f〉, 3751 ] 3752 } 3753 a2: { 3754 f: 〈0;f〉 3755 } 3756 a3: { 3757 f: { 3758 g: 〈1;f〉 3759 } 3760 } 3761 a4: { 3762 a: [ 3763 (〈1;a〉|int), 3764 ] 3765 } 3766 a5: { 3767 a: { 3768 b: (〈1;a〉|int) 3769 } 3770 } 3771 a6: { 3772 a: (〈0;a〉|int) 3773 } 3774 a7: { 3775 a: 〈0;c〉.x 3776 b: { 3777 x: 〈1;c〉 3778 y: "foo" 3779 } 3780 c: { 3781 x: 〈1;b〉.y 3782 y: 3 3783 } 3784 } 3785 b1: { 3786 b: (〈0;a〉 & [ 3787 1, 3788 ]) 3789 a: [ 3790 (〈1;a〉|int), 3791 ] 3792 } 3793 b2: { 3794 a: [ 3795 (〈1;a〉|int), 3796 ] 3797 b: (〈0;a〉 & [ 3798 1, 3799 ]) 3800 } 3801 b3: { 3802 x: { 3803 a: [ 3804 (〈1;a〉|int), 3805 ] 3806 } 3807 b: (〈0;x〉 & { 3808 a: [ 3809 1, 3810 ] 3811 }) 3812 } 3813 b4: { 3814 b: (〈0;x〉.y & [ 3815 1, 3816 ]) 3817 x: { 3818 y: [ 3819 〈1;y〉, 3820 ] 3821 } 3822 } 3823 b4: { 3824 cond1: { 3825 b: (〈0;x〉.y & { 3826 _z: false 3827 [ 3828 1, 3829 ] 3830 }) 3831 x: { 3832 y: { 3833 _z: (*true|bool) 3834 if 〈0;_z〉 { 3835 [ 3836 〈3;y〉, 3837 ] 3838 } 3839 } 3840 } 3841 } 3842 } 3843 b4: { 3844 cond2: { 3845 x: { 3846 y: { 3847 _z: (*true|bool) 3848 if 〈0;_z〉 { 3849 [ 3850 〈3;y〉, 3851 ] 3852 } 3853 } 3854 } 3855 b: (〈0;x〉.y & { 3856 _z: false 3857 [ 3858 1, 3859 ] 3860 }) 3861 } 3862 } 3863 b5: { 3864 b: (〈0;x〉.y & { 3865 a: [ 3866 1, 3867 ] 3868 }) 3869 x: { 3870 y: { 3871 a: [ 3872 (〈1;a〉|int), 3873 ] 3874 } 3875 } 3876 } 3877 b6: { 3878 b: (〈0;x〉 & { 3879 a: [ 3880 1, 3881 ] 3882 }) 3883 x: { 3884 a: [ 3885 〈1;a〉, 3886 ] 3887 } 3888 } 3889 b7: { 3890 b: (〈0;a〉 & [ 3891 [ 3892 1, 3893 ], 3894 ]) 3895 a: [ 3896 〈1;a〉, 3897 ] 3898 } 3899 b8: { 3900 x: 〈0;a〉 3901 a: { 3902 f: 〈1;b〉 3903 } 3904 b: (〈0;a〉|string) 3905 } 3906 b9: { 3907 #a: (string|〈0;#b〉|〈0;#ref〉) 3908 #b: { 3909 c: [ 3910 〈2;#a〉, 3911 〈2;#a〉, 3912 〈2;#a〉, 3913 ] 3914 } 3915 #ref: { 3916 ref: string 3917 } 3918 x: (〈0;#b〉|〈0;#ref〉) 3919 } 3920 b10: { 3921 a: close({ 3922 b: (string|〈1;a〉|〈1;c〉) 3923 }) 3924 c: close({ 3925 d: (string|〈1;a〉) 3926 }) 3927 d: { 3928 d: { 3929 b: string 3930 } 3931 } 3932 } 3933 b11: { 3934 #list: { 3935 tail: (〈1;#list〉|*null) 3936 if (〈0;tail〉 != null) {} 3937 } 3938 } 3939 b12: { 3940 #list: { 3941 value: int 3942 tail: (〈1;#list〉|*null) 3943 if (〈0;tail〉 != null) { 3944 sum: (〈1;value〉 + 〈1;tail〉.sum) 3945 } 3946 if (〈0;tail〉 == null) { 3947 sum: 〈1;value〉 3948 } 3949 } 3950 list1: 〈0;#list〉 3951 list1: { 3952 value: 1 3953 tail: { 3954 value: 2 3955 tail: { 3956 value: 3 3957 tail: { 3958 value: 4 3959 } 3960 } 3961 } 3962 } 3963 } 3964 b12b: { 3965 #list: { 3966 tail: 〈1;#list〉 3967 if (〈0;tail〉 != null) { 3968 sum: 〈1;tail〉.sum 3969 } 3970 } 3971 list1: 〈0;#list〉 3972 list1: { 3973 tail: { 3974 tail: {} 3975 } 3976 } 3977 } 3978 b13: { 3979 root: { 3980 a: [ 3981 for _, x in 〈2;root〉 { 3982 〈1;x〉 3983 }, 3984 ] 3985 } 3986 } 3987 b14: { 3988 root: { 3989 a: [ 3990 ...int, 3991 ] 3992 for _, x in 〈0;a〉 { 3993 "\(〈1;x〉)": {} 3994 } 3995 b: [ 3996 for _, x in 〈2;root〉 { 3997 〈1;x〉 3998 }, 3999 ] 4000 } 4001 } 4002 b15: { 4003 root: { 4004 a: { 4005 for _, x in 〈2;root〉 { 4006 〈1;x〉 4007 } 4008 } 4009 } 4010 } 4011 p1: { 4012 #T: { 4013 a: { 4014 [string]: { 4015 link: 〈3;#T〉 4016 } 4017 } 4018 } 4019 a: (〈0;#T〉 & { 4020 a: { 4021 one: { 4022 link: { 4023 a: { 4024 two: {} 4025 } 4026 } 4027 } 4028 } 4029 }) 4030 } 4031 p2: { 4032 #T: { 4033 a: { 4034 [string]: { 4035 link: 〈3;#T〉 4036 } 4037 } 4038 a: { 4039 b: {} 4040 } 4041 } 4042 a: (〈0;#T〉 & { 4043 a: { 4044 one: { 4045 link: { 4046 a: { 4047 two: {} 4048 } 4049 } 4050 } 4051 } 4052 }) 4053 } 4054 p3: { 4055 #S: { 4056 #T: { 4057 a: { 4058 [string]: { 4059 link: 〈3;#T〉 4060 } 4061 } 4062 } 4063 } 4064 #U: { 4065 〈1;#S〉 4066 #T: { 4067 a: { 4068 b: {} 4069 } 4070 } 4071 } 4072 a: (〈0;#U〉.#T & { 4073 a: { 4074 one: { 4075 link: { 4076 a: { 4077 two: {} 4078 } 4079 } 4080 } 4081 } 4082 }) 4083 } 4084 p4: { 4085 #T: { 4086 a: [ 4087 ...{ 4088 link: 〈3;#T〉 4089 }, 4090 ] 4091 } 4092 a: (〈0;#T〉 & { 4093 a: [ 4094 { 4095 link: { 4096 a: [ 4097 {}, 4098 ] 4099 } 4100 }, 4101 ] 4102 }) 4103 } 4104 p5: { 4105 #T: { 4106 a: [ 4107 ...{ 4108 link: 〈3;#T〉 4109 }, 4110 ] 4111 a: [ 4112 {}, 4113 ] 4114 } 4115 a: (〈0;#T〉 & { 4116 a: [ 4117 { 4118 link: { 4119 a: [ 4120 {}, 4121 ] 4122 } 4123 }, 4124 ] 4125 }) 4126 } 4127 p6: { 4128 #S: { 4129 #T: { 4130 a: [ 4131 ...{ 4132 link: 〈3;#T〉 4133 }, 4134 ] 4135 } 4136 } 4137 #U: { 4138 〈1;#S〉 4139 #T: { 4140 a: [ 4141 {}, 4142 ] 4143 } 4144 } 4145 a: (〈0;#U〉.#T & { 4146 a: [ 4147 { 4148 link: { 4149 a: [ 4150 {}, 4151 ] 4152 } 4153 }, 4154 ] 4155 }) 4156 } 4157 c1: { 4158 a: { 4159 b: {} 4160 c: (〈1;a〉 & 〈0;b〉) 4161 } 4162 } 4163 d1: { 4164 a: { 4165 b: { 4166 c: { 4167 d: { 4168 h: int 4169 t: 〈4;r〉 4170 } 4171 } 4172 } 4173 } 4174 r: 〈0;a〉.b 4175 x: 〈0;a〉.b.c 4176 } 4177 d2: { 4178 x: 〈0;a〉.b.c 4179 r: 〈0;a〉.b 4180 a: { 4181 b: { 4182 c: { 4183 d: { 4184 h: int 4185 t: 〈4;r〉 4186 } 4187 } 4188 } 4189 } 4190 } 4191 d3: { 4192 config: { 4193 a: { 4194 b: { 4195 c: 〈2;indirect〉 4196 } 4197 } 4198 indirect: [ 4199 〈1;a〉.b, 4200 null, 4201 ][〈0;i〉] 4202 i: (int|*1) 4203 } 4204 x: (〈0;config〉 & { 4205 i: 0 4206 }) 4207 } 4208 shortPathFail: _ 4209 shortPathFail: { 4210 doubleRef: { 4211 a: 〈0;#List〉 4212 #List: { 4213 Next: (〈1;#List〉|*null) 4214 } 4215 } 4216 } 4217 shortPathFail: { 4218 elipsis: { 4219 t1: { 4220 #Foo: { 4221 ref: (null|〈1;#Foo〉) 4222 } 4223 #Foo: { 4224 ... 4225 } 4226 } 4227 t2: { 4228 Foo: { 4229 ref: 〈1;Foo〉 4230 } 4231 Foo: { 4232 ... 4233 } 4234 } 4235 } 4236 } 4237 patternFail: { 4238 issue2374: { 4239 [string]: { 4240 b: 〈1;(〈0;-〉)〉 4241 } 4242 a: { 4243 r: 0 4244 } 4245 } 4246 } 4247 shortPathFail: { 4248 comprehension: { 4249 #list: { 4250 tail: (〈1;#list〉|*null) 4251 if (〈0;tail〉 != null) {} 4252 } 4253 } 4254 } 4255 withLetFail: { 4256 schema: { 4257 next: 〈1;let _schema_1#1〉 4258 } 4259 let _schema_1#1 = 〈0;schema〉 4260 } 4261 listOptOK: { 4262 list: { 4263 head: int 4264 tail?: 〈1;list〉 4265 } 4266 a: (〈0;list〉 & { 4267 head: 3 4268 tail: { 4269 head: 2 4270 } 4271 }) 4272 } 4273 e1: { 4274 a: 〈0;a〉 4275 a: { 4276 c: 〈1;a〉 4277 } 4278 b: { 4279 c: 〈1;b〉 4280 } 4281 b: 〈0;b〉 4282 } 4283 e2: { 4284 a: { 4285 〈1;a〉 4286 } 4287 a: { 4288 c: 〈1;a〉 4289 } 4290 b: { 4291 c: 〈1;b〉 4292 } 4293 b: { 4294 〈1;b〉 4295 } 4296 } 4297 e3: { 4298 a: [ 4299 〈1;a〉, 4300 ] 4301 a: { 4302 c: 〈1;a〉 4303 } 4304 b: [ 4305 〈1;b〉, 4306 ] 4307 b: { 4308 c: 〈1;b〉 4309 } 4310 } 4311 e4: { 4312 a: [ 4313 (〈1;a〉|{}), 4314 ] 4315 a: [ 4316 [ 4317 { 4318 c: 1 4319 }, 4320 ], 4321 ] 4322 b: [ 4323 [ 4324 { 4325 c: 1 4326 }, 4327 ], 4328 ] 4329 b: [ 4330 (〈1;b〉|{}), 4331 ] 4332 } 4333 e5: { 4334 a: { 4335 c: (〈1;a〉|int) 4336 } 4337 a: (〈0;a〉|int) 4338 b: (〈0;b〉|int) 4339 b: { 4340 c: (〈1;b〉|int) 4341 } 4342 } 4343 nestedList: { 4344 v1e: { 4345 x: [ 4346 (〈1;x〉|int), 4347 1, 4348 ] 4349 y: (〈0;x〉 & [ 4350 [ 4351 [ 4352 2, 4353 ], 4354 1, 4355 ], 4356 1, 4357 ]) 4358 } 4359 v2e: { 4360 y: (〈0;x〉 & [ 4361 [ 4362 [ 4363 2, 4364 ], 4365 1, 4366 ], 4367 1, 4368 ]) 4369 x: [ 4370 (〈1;x〉|int), 4371 1, 4372 ] 4373 } 4374 v1: { 4375 x: [ 4376 (〈1;x〉|int), 4377 1, 4378 ] 4379 y: (〈0;x〉 & [ 4380 [ 4381 [ 4382 2, 4383 1, 4384 ], 4385 1, 4386 ], 4387 1, 4388 ]) 4389 } 4390 v2: { 4391 y: (〈0;x〉 & [ 4392 [ 4393 [ 4394 2, 4395 1, 4396 ], 4397 1, 4398 ], 4399 1, 4400 ]) 4401 x: [ 4402 (〈1;x〉|int), 4403 1, 4404 ] 4405 } 4406 } 4407 v3: { 4408 list: { 4409 head: int 4410 tail: (〈1;list〉|null) 4411 } 4412 myList: 〈0;list〉 4413 myList: { 4414 head: 2 4415 tail: { 4416 head: 3 4417 tail: { 4418 head: 4 4419 } 4420 } 4421 } 4422 } 4423 v4: { 4424 list: { 4425 head: int 4426 tail: (〈1;list〉|1) 4427 } 4428 myList: 〈0;list〉 4429 myList: { 4430 head: 2 4431 tail: { 4432 head: 3 4433 } 4434 } 4435 } 4436 v5: { 4437 list: { 4438 head: int 4439 tail: (〈1;list〉|{}) 4440 } 4441 myList: 〈0;list〉 4442 myList: { 4443 head: 2 4444 tail: { 4445 head: 3 4446 } 4447 } 4448 } 4449 z1: { 4450 y: { 4451 f: { 4452 h: 〈1;g〉 4453 } 4454 g: _ 4455 } 4456 x: { 4457 f: _ 4458 g: 〈0;f〉 4459 } 4460 z: (〈0;x〉 & 〈0;y〉) 4461 } 4462 crossRefNoCycle: { 4463 t1: { 4464 T: { 4465 x: _ 4466 y: 〈0;x〉 4467 } 4468 C: ({ 4469 x: 〈1;T〉 4470 } & 〈0;T〉) 4471 } 4472 } 4473 crossRefNoCycle: { 4474 t2: { 4475 T: { 4476 x: _ 4477 y: 〈0;x〉 4478 } 4479 C: (〈0;T〉 & { 4480 x: 〈1;T〉 4481 }) 4482 } 4483 } 4484 crossRefNoCycle: { 4485 t3: { 4486 T: { 4487 x: _ 4488 y: 〈0;x〉 4489 z: 〈0;y〉 4490 } 4491 C: (〈0;T〉 & { 4492 x: 〈1;T〉 4493 }) 4494 } 4495 } 4496 crossRefNoCycle: { 4497 t4: { 4498 T: { 4499 x: _ 4500 y: 〈0;x〉 4501 z: 〈0;y〉 4502 } 4503 C: (〈0;T〉 & { 4504 x: (〈1;T〉 & { 4505 x: 〈2;T〉 4506 }) 4507 }) 4508 } 4509 } 4510 n1: { 4511 a: { 4512 b: int 4513 } 4514 } 4515 n2: (〈0;n1〉 & { 4516 a: 〈1;n1〉 4517 }) 4518 n3: (〈0;n1〉 & { 4519 〈1;n1〉 4520 }) 4521 n4: (〈0;n1〉 & { 4522 x: (〈1;n1〉 & { 4523 y: (〈2;n1〉 & { 4524 z: int 4525 }) 4526 }) 4527 }) 4528 }