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