cuelang.org/go@v0.13.0/cue/testdata/disjunctions/elimination.txtar (about) 1 // Ensure that disjunction elimination is not done prematurely. 2 3 // Issue #651 4 5 -- in.cue -- 6 import "struct" 7 8 // Closedness checks should not be triggered too early, or with an improper 9 // subset of StructInfos. Blindly finalizing partial disjuncts will end up 10 // doing a closedness check with not all embeddings present, which can lead to 11 // a field being rejected prematurely. 12 // 13 // It should be recursively disabled. 14 disambiguateClosed: { 15 b: #Def & a 16 a: #Def 17 #Def: {{x: true} | {y: true}} 18 } 19 20 // Checks should never be disabled for field matching. 21 alwaysCheckMatchers1: { 22 b: {[=~"^xxxx$"]: int} | null 23 b: {c: string} | null 24 b: c: "yyyyy" 25 } 26 27 alwaysCheckPatterns2: { 28 a: #X 29 a: b 30 31 b: #X 32 b: c: "yyyyy" 33 34 #X: string | { 35 c: string 36 {[=~"^xxxx$"]: int} 37 } 38 } 39 40 nestedNonMonotonic: resolved: n1: { 41 x: {a: struct.MinFields(2)} | null 42 x: {a: c: 1} | null 43 x: {a: d: 1} | null 44 } 45 46 nestedNonMonotonic: resolved: n2: { 47 x: {a: b: struct.MinFields(2)} | null 48 x: {a: b: c: 1} | null 49 x: {a: b: d: 1} | null 50 } 51 52 nestedNonMonotonic: eliminated: n1: p1: { 53 x: {a: struct.MaxFields(1)} | null 54 x: {a: c: 1} | null 55 x: {a: d: 1} | null 56 } 57 58 nestedNonMonotonic: eliminated: n1: p2: { 59 x: {a: c: 1} | null 60 x: {a: struct.MaxFields(1)} | null 61 x: {a: d: 1} | null 62 } 63 64 nestedNonMonotonic: eliminated: n1: p2: { 65 x: {a: c: 1} | null 66 x: {a: d: 1} | null 67 x: {a: struct.MaxFields(1)} | null 68 } 69 70 nestedNonMonotonic: eliminated: n2: p1: { 71 x: {a: b: struct.MaxFields(1)} | null 72 x: {a: b: c: 1} | null 73 x: {a: b: d: 1} | null 74 } 75 76 nestedNonMonotonic: eliminated: n2: p2: { 77 x: {a: b: c: 1} | null 78 x: {a: b: struct.MaxFields(1)} | null 79 x: {a: b: d: 1} | null 80 } 81 82 nestedNonMonotonic: eliminated: n2: p2: { 83 x: {a: b: c: 1} | null 84 x: {a: b: d: 1} | null 85 x: {a: b: struct.MaxFields(1)} | null 86 } 87 88 // TODO: should be incomplete. 89 nestedNonMonotonic: incomplete: a: n1: p1: { 90 x: {a: struct.MinFields(2)} | null 91 x: {a: c: 1} | null 92 } 93 94 // TODO: should be incomplete. 95 nestedNonMonotonic: incomplete: a: n1: p2: { 96 x: {a: c: 1} | null 97 x: {a: struct.MinFields(2)} | null 98 } 99 100 nestedNonMonotonic: incomplete: a: n2: p1: { 101 x: {a: b: struct.MinFields(2)} | null 102 x: {a: b: c: 1} | null 103 } 104 105 nestedNonMonotonic: incomplete: a: n2: p2: { 106 x: {a: b: c: 1} | null 107 x: {a: b: struct.MinFields(2)} | null 108 } 109 110 nestedNonMonotonic: incomplete: b: n1: p1: { 111 x: {a: struct.MinFields(3)} | null 112 x: {a: c: 1} | null 113 x: {a: d: 1} | null 114 } 115 116 nestedNonMonotonic: incomplete: b: n1: p2: { 117 x: {a: c: 1} | null 118 x: {a: struct.MinFields(3)} | null 119 x: {a: d: 1} | null 120 } 121 122 nestedNonMonotonic: incomplete: b: n1: p3: { 123 x: {a: c: 1} | null 124 x: {a: d: 1} | null 125 x: {a: struct.MinFields(3)} | null 126 } 127 128 nestedNonMonotonic: incomplete: b: n2: p1: { 129 x: {a: b: struct.MinFields(3)} | null 130 x: {a: b: c: 1} | null 131 x: {a: b: d: 1} | null 132 } 133 134 nestedNonMonotonic: incomplete: b: n2: p1: { 135 x: {a: b: c: 1} | null 136 x: {a: b: struct.MinFields(3)} | null 137 x: {a: b: d: 1} | null 138 } 139 140 nestedNonMonotonic: incomplete: b: n2: p1: { 141 x: {a: b: c: 1} | null 142 x: {a: b: d: 1} | null 143 x: {a: b: struct.MinFields(3)} | null 144 } 145 146 preserveClosedness: small: p1: { 147 #A: #B & {a: string} 148 #B: { 149 *{} | {a: string} 150 *{} | {b: int} 151 } 152 } 153 154 preserveClosedness: small: p2: { 155 #A: #B & {a: string} 156 #B: { 157 {a: string} | *{} 158 *{} | {b: int} 159 } 160 } 161 162 preserveClosedness: medium: p1: { 163 #A: #B & {a: string} 164 #B: { 165 *{} | {a: string} | {b: string} 166 *{} | {c: int} | {d: string} 167 } 168 } 169 170 preserveClosedness: medium: p2: { 171 #A: #B & {a: string} 172 #B: { 173 {a: string} | *{} | {b: string} 174 *{} | {c: int} | {d: string} 175 } 176 } 177 178 preserveClosedness: medium: p3: { 179 #A: #B & {a: string} 180 #B: { 181 {a: string} | {b: string} | *{} 182 *{} | {c: int} | {d: string} 183 } 184 } 185 186 // If an error occurred in the last disjunction, it may sometimes be propagated 187 // to parent nodes. This, in turn, could lead to references to such field 188 // to fail with that error. 189 noChildError: _ 190 noChildError: issue1608: { 191 myValue: #type & {fieldName: "some string"} 192 #type: fieldName: #subtype 193 194 #subtype: string | {foo: string} | {bar: #subtype} 195 } 196 197 noChildError: t1: { 198 #D: {b: string} | {c: #D } 199 o: #D & {b: "test"} 200 } 201 202 noChildError: t2: { 203 o: #D & {b: "test"} 204 #D: {b: string} | {c: #D } 205 } 206 207 noChildError: t3: { 208 #D: {a: null} | {b: string} | {c: #D } 209 o: #D & {b: "test"} 210 } 211 212 noChildError: t4: { 213 o: #D & {b: "test"} 214 #D: {a: null} | {b: string} | {c: #D } 215 } 216 217 218 issue1924: t1: { 219 m: a: 2 220 x: *[m.b] | 2 221 } 222 issue1924: t2: { 223 m: a: 2 224 x: *{v: m.b} | 3 225 } 226 issue1924: t3: { 227 m: a: 2 228 x: *m.b | 1 229 } 230 231 // should eliminate erroneous comprehension and pass 232 issue1838: t1: { 233 p?: [] 234 a: [for k in p {k}] | null 235 } 236 issue1838: t2: { 237 p?: [] 238 a: null | [for k in p {k}] 239 } 240 241 noHang: { 242 // This should terminate. 243 #T: ["a", #T] | ["d", ...#T] 244 245 x: #T 246 247 #X: x 248 #X: #T 249 } 250 251 issue1940: { 252 #T: ["a", #T] | ["b", #T] | ["c", #T] | ["d", [...#T]] 253 254 #A: type: #T 255 256 #B: [string]: #A 257 258 #C: #B & { 259 x: #A 260 } 261 } 262 263 -- issue2209full.cue -- 264 // TODO: fix 265 266 issue2209: simplified: t1: { 267 #SpecFoo: foo: min: 1 268 #SpecBar: bar: min: 1 269 spec: bar: {} 270 spec: #SpecFoo | #SpecBar 271 out: { 272 {nullFoo: null} | {nullBar: null} 273 {minFoo: int} | {minBar: int} 274 if X.bar != _|_ { 275 minBar: X.bar.min 276 } 277 X: spec 278 } 279 } 280 281 issue2209: simplified: t2: { 282 #SpecFoo: foo: {} 283 #SpecBar: bar: x: 1 284 spec: bar: {} 285 spec: *#SpecFoo | #SpecBar 286 if spec.bar != _|_ { 287 BAZ: spec.bar.x 288 } 289 {f1: int} | {b2: int} 290 {f2: int} | {b2: int} 291 } 292 293 // This test fails for 0.4 and 0.5. 294 issue2209: simplified: t3: { 295 #A: v: 1 296 {f1: int} | {b2: int} 297 {f2: int} | {b2: int} 298 BAZ: S.y 299 S: *#A | #B 300 #B: {x: 1, y: 1} 301 S: x: 1 302 } 303 304 issue2209: full: { 305 Foo: #Abstract & {spec: foo: {}} 306 Bar: #Abstract & {spec: bar: {}} 307 308 #Abstract: X={ 309 spec: _#Spec 310 311 resource: _Thing & {_X: spec: X.spec} 312 } 313 314 _#Spec: *_#SpecFoo | _#SpecBar 315 316 _#SpecFoo: { 317 foo: { 318 min: int | *10 319 max: int | *20 320 } 321 } 322 323 _#SpecBar: { 324 bar: { 325 min: int | *30 326 max: int | *40 327 } 328 } 329 330 _Thing: #Constrained & { 331 _X: _ 332 333 spec: { 334 if _X.spec.foo != _|_ { 335 minFoo: _X.spec.foo.min 336 maxFoo: _X.spec.foo.max 337 } 338 339 if _X.spec.bar != _|_ { 340 minBar: _X.spec.bar.min 341 maxBar: _X.spec.bar.max 342 } 343 } 344 } 345 346 #Constrained: #Base & { 347 spec: { 348 minFoo: int | *10 349 maxFoo: int | *20 350 minBar?: null 351 maxBar?: null 352 } | { 353 minBar: int | *30 354 maxBar: int | *40 355 minFoo?: null 356 maxFoo?: null 357 } 358 359 spec: *{ 360 fuga?: null 361 } | { 362 hoge?: null 363 } 364 } 365 366 #Base: { 367 spec: { 368 minFoo?: null | int 369 maxFoo?: null | int 370 minBar?: null | int 371 maxBar?: null | int 372 373 hoge?: null | bool 374 fuga?: null | bool 375 } 376 } 377 } 378 379 380 -- issue2246.cue -- 381 issue2246: simplified: { 382 #FormFoo: fooID: string 383 #FormBar: barID: string 384 #Form: { #FormFoo | #FormBar } 385 386 data: {fooID: "123"} 387 out1: #Form & data 388 out2: #Form & out1 389 } 390 issue2246: full: { 391 data: forms: [{ 392 fooID: "00-0000001" 393 }] 394 395 form1040: (#compute & {in: data}).out 396 397 #K1: { 398 #_base: common: 3 399 #FormFoo: { 400 #_base 401 fooID: string 402 } 403 #FormBar: { 404 #_base 405 barID: string 406 } 407 #Form: { 408 #FormFoo | #FormBar 409 } 410 } 411 412 #Input: { 413 forms: [...#K1.#Form] 414 } 415 416 #summarizeReturn: { 417 in: #Input 418 out: [for k in in.forms { k.common }] 419 } 420 421 #compute: { 422 in: #Input 423 out: (#summarizeReturn & {"in": in}).out 424 } 425 } 426 427 -- issue2263.cue -- 428 issue2263: simplified: { 429 metrics: #Metric 430 #Metric: { 431 #IDSource | {} 432 #TargetAverage | {} 433 } 434 435 metrics: { 436 id: "foo" 437 avg: 60 438 } 439 440 #IDSource: id: string 441 #TargetAverage: avg: number 442 } 443 issue2263: full: { 444 metrics: [...#Metric] 445 446 metrics: [{ 447 id: "foo" 448 avg: 60 449 }, { 450 id: "bar" 451 value: 80 452 }, { 453 uri: "baz" 454 avg: 70 455 }, { 456 uri: "qux" 457 value: 90 458 }] 459 460 #Metric: { 461 #Source 462 #Target 463 } 464 465 #Source: 466 #IDSource | 467 #URISource 468 469 #Target: 470 #TargetAverage | 471 #TargetValue 472 473 #IDSource: { 474 id: string 475 } 476 477 #URISource: { 478 uri: string 479 } 480 481 #TargetAverage: { 482 avg: number 483 } 484 485 #TargetValue: { 486 value: number 487 } 488 } 489 -- issue1417.cue -- 490 issue1417: { 491 #ID: !~"^a" | =~"^ab$" | =~"^aB$" 492 #ID: =~"^a" | !~"[A-Z]" 493 ids: [...#ID] & ["xyz", "ab", "aB"] 494 } 495 -- issue3149.cue -- 496 issue3149: { 497 #valid: { 498 name!: ( (=~"^Foo") | "an exception") & ( (=~"Foo$") | "an exception") 499 } 500 list: [...#valid] 501 list: [ 502 {name: "FooBarFoo"}, 503 {name: "FooBazFoo"}, 504 {name: "FooQuuxFoo"}, 505 {name: "an exception"}, 506 ] 507 } 508 -- issue770.cue -- 509 issue770: { 510 #A: { 511 v: "a" | "b" | "c" 512 } 513 h: [string]: #A 514 h: a: { 515 v: *"a" | string 516 } 517 h: [=~"^b"]: { 518 v: *h.a.v | string 519 } 520 h: [=~"^c"]: { 521 v: *h.b.v | string 522 } 523 h: b: _ 524 h: boo: _ 525 h: c: _ 526 h: coo: _ 527 } 528 -- issue3528.cue -- 529 issue3528: original: { 530 workflows: [...#Workflow] 531 workflows: [test] 532 533 test: #Workflow & {} 534 535 #Workflow: { 536 container: [string]: string | #container 537 #container: string | {volumes?: [...string]} 538 } 539 } 540 issue3528: reduced: { 541 a?: #A 542 a: #A & {} 543 #A: { 544 A: [string]: 1 | #a 545 #a: 2 | {v: 1} 546 } 547 } 548 issue3528: counter: { 549 } 550 issue3528: nested: t1: { 551 {v: 1} | (2 | 3) 552 {v: 1} | (2 | 3) 553 {v: 1} | (2 | 3) 554 {v: 1} | (2 | 3) 555 } 556 issue3528: nested: t2: { 557 {v: 1} | 2 558 {v: 1} | (2 | 3) 559 {v: 1} | 2 560 {v: 1} | 2 561 } 562 -- issue3784.cue -- 563 issue3784: reduced: { 564 #Schema: a: { 565 kind: "A" 566 b: c?: string 567 b: {} 568 } | { 569 kind: "B" 570 } 571 572 out: #Schema 573 out: a: { 574 kind: "A" 575 b: c: "x" 576 } 577 } 578 issue3784: full: { 579 #Schema: { 580 pages?: { 581 build_type?: "legacy" | "workflow" 582 source?: { 583 branch?: string 584 path?: string 585 } 586 cname?: string 587 } 588 pages?: { 589 build_type!: "legacy" 590 source!: { 591 branch!: _ 592 } 593 } | close({ 594 build_type!: "workflow" 595 cname?: _ 596 }) 597 } 598 out: #Schema & { 599 pages: { 600 cname: "foo.com" 601 build_type: "legacy" 602 source: { 603 branch: "main" 604 path: "/" 605 } 606 } 607 } 608 } 609 issue3784: variant1: { 610 #Schema: { 611 pages: { 612 build_type?: "legacy" | "workflow" 613 source: { 614 branch?: string 615 path?: string 616 } 617 cname?: string 618 } 619 pages?: { 620 build_type!: "legacy" 621 source!: { 622 branch!: _ 623 } 624 } | close({ 625 build_type!: "workflow" 626 cname?: _ 627 }) 628 } 629 } 630 issue3784: variant2: { 631 #Schema: { 632 build_type!: "legacy" 633 source!: { 634 branch!: _ 635 } 636 } | close({ 637 build_type!: "workflow" 638 cname?: _ 639 }) 640 a: #Schema 641 a: { 642 build_type?: "legacy" | "workflow" 643 source: { 644 branch?: string 645 path?: string 646 } 647 cname?: string 648 } 649 } 650 -- out/evalalpha -- 651 (struct){ 652 disambiguateClosed: (struct){ 653 b: (#struct){ |((#struct){ 654 x: (bool){ true } 655 }, (#struct){ 656 y: (bool){ true } 657 }) } 658 a: (#struct){ |((#struct){ 659 x: (bool){ true } 660 }, (#struct){ 661 y: (bool){ true } 662 }) } 663 #Def: (#struct){ |((#struct){ 664 x: (bool){ true } 665 }, (#struct){ 666 y: (bool){ true } 667 }) } 668 } 669 alwaysCheckMatchers1: (struct){ 670 b: (struct){ 671 c: (string){ "yyyyy" } 672 } 673 } 674 alwaysCheckPatterns2: (struct){ 675 a: (#struct){ 676 c: (string){ "yyyyy" } 677 } 678 b: (#struct){ 679 c: (string){ "yyyyy" } 680 } 681 #X: ((string|struct)){ |((string){ string }, (#struct){ 682 c: (string){ string } 683 }) } 684 } 685 nestedNonMonotonic: (struct){ 686 resolved: (struct){ 687 n1: (struct){ 688 x: ((null|struct)){ |((struct){ 689 a: (struct){ 690 c: (int){ 1 } 691 d: (int){ 1 } 692 } 693 }, (null){ null }) } 694 } 695 n2: (struct){ 696 x: ((null|struct)){ |((struct){ 697 a: (struct){ 698 b: (struct){ 699 c: (int){ 1 } 700 d: (int){ 1 } 701 } 702 } 703 }, (null){ null }) } 704 } 705 } 706 eliminated: (struct){ 707 n1: (struct){ 708 p1: (struct){ 709 x: (null){ null } 710 } 711 p2: (struct){ 712 x: (null){ null } 713 } 714 } 715 n2: (struct){ 716 p1: (struct){ 717 x: (null){ null } 718 } 719 p2: (struct){ 720 x: (null){ null } 721 } 722 } 723 } 724 incomplete: (struct){ 725 a: (struct){ 726 n1: (struct){ 727 p1: (struct){ 728 x: (null){ null } 729 } 730 p2: (struct){ 731 x: (null){ null } 732 } 733 } 734 n2: (struct){ 735 p1: (struct){ 736 x: ((null|struct)){ |((struct){ 737 a: (struct){ 738 b: (_|_){ 739 // [incomplete] nestedNonMonotonic.incomplete.a.n2.p1.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2): 740 // ./in.cue:96:15 741 // ./in.cue:96:32 742 // ./in.cue:97:12 743 c: (int){ 1 } 744 } 745 } 746 }, (null){ null }) } 747 } 748 p2: (struct){ 749 x: ((null|struct)){ |((struct){ 750 a: (struct){ 751 b: (_|_){ 752 // [incomplete] nestedNonMonotonic.incomplete.a.n2.p2.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2): 753 // ./in.cue:102:15 754 // ./in.cue:101:12 755 // ./in.cue:102:32 756 c: (int){ 1 } 757 } 758 } 759 }, (null){ null }) } 760 } 761 } 762 } 763 b: (struct){ 764 n1: (struct){ 765 p1: (struct){ 766 x: (null){ null } 767 } 768 p2: (struct){ 769 x: (null){ null } 770 } 771 p3: (struct){ 772 x: (null){ null } 773 } 774 } 775 n2: (struct){ 776 p1: (struct){ 777 x: ((null|struct)){ |((struct){ 778 a: (struct){ 779 b: (_|_){ 780 // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1,d:1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3): 781 // ./in.cue:138:15 782 // ./in.cue:124:15 783 // ./in.cue:125:12 784 // ./in.cue:126:12 785 // ./in.cue:130:12 786 // ./in.cue:131:15 787 // ./in.cue:132:12 788 // ./in.cue:136:12 789 // ./in.cue:137:12 790 // ./in.cue:138:32 791 c: (int){ 1 } 792 d: (int){ 1 } 793 } 794 } 795 }, (null){ null }) } 796 } 797 } 798 } 799 } 800 } 801 preserveClosedness: (struct){ 802 small: (struct){ 803 p1: (struct){ 804 #A: (#struct){ |(*(#struct){ 805 a: (string){ string } 806 }, (#struct){ 807 a: (string){ string } 808 b: (int){ int } 809 }) } 810 #B: (#struct){ |(*(#struct){ 811 }, (#struct){ 812 b: (int){ int } 813 }, (#struct){ 814 a: (string){ string } 815 }, (#struct){ 816 a: (string){ string } 817 b: (int){ int } 818 }) } 819 } 820 p2: (struct){ 821 #A: (#struct){ |(*(#struct){ 822 a: (string){ string } 823 }, (#struct){ 824 a: (string){ string } 825 b: (int){ int } 826 }) } 827 #B: (#struct){ |(*(#struct){ 828 }, (#struct){ 829 a: (string){ string } 830 b: (int){ int } 831 }, (#struct){ 832 a: (string){ string } 833 }, (#struct){ 834 b: (int){ int } 835 }) } 836 } 837 } 838 medium: (struct){ 839 p1: (struct){ 840 #A: (#struct){ |(*(#struct){ 841 a: (string){ string } 842 }, (#struct){ 843 a: (string){ string } 844 c: (int){ int } 845 }, (#struct){ 846 a: (string){ string } 847 d: (string){ string } 848 }) } 849 #B: (#struct){ |(*(#struct){ 850 }, (#struct){ 851 c: (int){ int } 852 }, (#struct){ 853 d: (string){ string } 854 }, (#struct){ 855 a: (string){ string } 856 }, (#struct){ 857 a: (string){ string } 858 c: (int){ int } 859 }, (#struct){ 860 a: (string){ string } 861 d: (string){ string } 862 }, (#struct){ 863 b: (string){ string } 864 }, (#struct){ 865 b: (string){ string } 866 c: (int){ int } 867 }, (#struct){ 868 b: (string){ string } 869 d: (string){ string } 870 }) } 871 } 872 p2: (struct){ 873 #A: (#struct){ |(*(#struct){ 874 a: (string){ string } 875 }, (#struct){ 876 a: (string){ string } 877 c: (int){ int } 878 }, (#struct){ 879 a: (string){ string } 880 d: (string){ string } 881 }) } 882 #B: (#struct){ |(*(#struct){ 883 }, (#struct){ 884 a: (string){ string } 885 c: (int){ int } 886 }, (#struct){ 887 a: (string){ string } 888 d: (string){ string } 889 }, (#struct){ 890 a: (string){ string } 891 }, (#struct){ 892 c: (int){ int } 893 }, (#struct){ 894 d: (string){ string } 895 }, (#struct){ 896 b: (string){ string } 897 }, (#struct){ 898 b: (string){ string } 899 c: (int){ int } 900 }, (#struct){ 901 b: (string){ string } 902 d: (string){ string } 903 }) } 904 } 905 p3: (struct){ 906 #A: (#struct){ |(*(#struct){ 907 a: (string){ string } 908 }, (#struct){ 909 a: (string){ string } 910 c: (int){ int } 911 }, (#struct){ 912 a: (string){ string } 913 d: (string){ string } 914 }) } 915 #B: (#struct){ |(*(#struct){ 916 }, (#struct){ 917 a: (string){ string } 918 c: (int){ int } 919 }, (#struct){ 920 a: (string){ string } 921 d: (string){ string } 922 }, (#struct){ 923 b: (string){ string } 924 }, (#struct){ 925 b: (string){ string } 926 c: (int){ int } 927 }, (#struct){ 928 b: (string){ string } 929 d: (string){ string } 930 }, (#struct){ 931 a: (string){ string } 932 }, (#struct){ 933 c: (int){ int } 934 }, (#struct){ 935 d: (string){ string } 936 }) } 937 } 938 } 939 } 940 noChildError: (struct){ 941 issue1608: (struct){ 942 myValue: (#struct){ 943 fieldName: (string){ "some string" } 944 } 945 #type: (#struct){ 946 fieldName: ((string|struct)){ |((string){ string }, (#struct){ 947 foo: (string){ string } 948 }) } 949 } 950 #subtype: ((string|struct)){ |((string){ string }, (#struct){ 951 foo: (string){ string } 952 }) } 953 } 954 t1: (struct){ 955 #D: (#struct){ 956 b: (string){ string } 957 } 958 o: (#struct){ 959 b: (string){ "test" } 960 } 961 } 962 t2: (struct){ 963 o: (#struct){ 964 b: (string){ "test" } 965 } 966 #D: (#struct){ 967 b: (string){ string } 968 } 969 } 970 t3: (struct){ 971 #D: (#struct){ |((#struct){ 972 a: (null){ null } 973 }, (#struct){ 974 b: (string){ string } 975 }) } 976 o: (#struct){ 977 b: (string){ "test" } 978 } 979 } 980 t4: (struct){ 981 o: (#struct){ 982 b: (string){ "test" } 983 } 984 #D: (#struct){ |((#struct){ 985 a: (null){ null } 986 }, (#struct){ 987 b: (string){ string } 988 }) } 989 } 990 } 991 issue1924: (struct){ 992 t1: (struct){ 993 m: (struct){ 994 a: (int){ 2 } 995 } 996 x: (int){ 2 } 997 } 998 t2: (struct){ 999 m: (struct){ 1000 a: (int){ 2 } 1001 } 1002 x: (int){ 3 } 1003 } 1004 t3: (struct){ 1005 m: (struct){ 1006 a: (int){ 2 } 1007 } 1008 x: (int){ 1 } 1009 } 1010 } 1011 issue1838: (struct){ 1012 t1: (struct){ 1013 p?: (#list){ 1014 } 1015 a: (null){ null } 1016 } 1017 t2: (struct){ 1018 p?: (#list){ 1019 } 1020 a: (null){ null } 1021 } 1022 } 1023 noHang: (struct){ 1024 #T: (list){ 1025 0: (string){ "d" } 1026 } 1027 x: ~(noHang.#T) 1028 #X: ~(noHang.#T) 1029 } 1030 issue1940: (struct){ 1031 #T: (#list){ 1032 0: (string){ "d" } 1033 1: (list){ 1034 } 1035 } 1036 #A: (#struct){ 1037 type: ~(issue1940.#T) 1038 } 1039 #B: (#struct){ 1040 } 1041 #C: (#struct){ 1042 x: ~(issue1940.#A) 1043 } 1044 } 1045 issue1417: (struct){ 1046 #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) } 1047 ids: (#list){ 1048 0: (string){ "xyz" } 1049 1: (string){ "ab" } 1050 2: (string){ "aB" } 1051 } 1052 } 1053 issue2209: (struct){ 1054 simplified: (struct){ 1055 t1: (struct){ 1056 #SpecFoo: (#struct){ 1057 foo: (#struct){ 1058 min: (int){ 1 } 1059 } 1060 } 1061 #SpecBar: (#struct){ 1062 bar: (#struct){ 1063 min: (int){ 1 } 1064 } 1065 } 1066 spec: (#struct){ 1067 bar: (#struct){ 1068 min: (int){ 1 } 1069 } 1070 } 1071 out: (struct){ |((struct){ 1072 minBar: (int){ 1 } 1073 X: ~(issue2209.simplified.t1.spec) 1074 nullFoo: (null){ null } 1075 minFoo: (int){ int } 1076 }, (struct){ 1077 minBar: (int){ 1 } 1078 X: ~(issue2209.simplified.t1.spec) 1079 nullFoo: (null){ null } 1080 }, (struct){ 1081 minBar: (int){ 1 } 1082 X: ~(issue2209.simplified.t1.spec) 1083 nullBar: (null){ null } 1084 minFoo: (int){ int } 1085 }, (struct){ 1086 minBar: (int){ 1 } 1087 X: ~(issue2209.simplified.t1.spec) 1088 nullBar: (null){ null } 1089 }) } 1090 } 1091 t2: (struct){ |((struct){ 1092 #SpecFoo: (#struct){ 1093 foo: (#struct){ 1094 } 1095 } 1096 #SpecBar: (#struct){ 1097 bar: (#struct){ 1098 x: (int){ 1 } 1099 } 1100 } 1101 spec: (#struct){ 1102 bar: (#struct){ 1103 x: (int){ 1 } 1104 } 1105 } 1106 BAZ: (int){ 1 } 1107 f1: (int){ int } 1108 f2: (int){ int } 1109 }, (struct){ 1110 #SpecFoo: (#struct){ 1111 foo: (#struct){ 1112 } 1113 } 1114 #SpecBar: (#struct){ 1115 bar: (#struct){ 1116 x: (int){ 1 } 1117 } 1118 } 1119 spec: (#struct){ 1120 bar: (#struct){ 1121 x: (int){ 1 } 1122 } 1123 } 1124 BAZ: (int){ 1 } 1125 f1: (int){ int } 1126 b2: (int){ int } 1127 }, (struct){ 1128 #SpecFoo: (#struct){ 1129 foo: (#struct){ 1130 } 1131 } 1132 #SpecBar: (#struct){ 1133 bar: (#struct){ 1134 x: (int){ 1 } 1135 } 1136 } 1137 spec: (#struct){ 1138 bar: (#struct){ 1139 x: (int){ 1 } 1140 } 1141 } 1142 BAZ: (int){ 1 } 1143 b2: (int){ int } 1144 f2: (int){ int } 1145 }, (struct){ 1146 #SpecFoo: (#struct){ 1147 foo: (#struct){ 1148 } 1149 } 1150 #SpecBar: (#struct){ 1151 bar: (#struct){ 1152 x: (int){ 1 } 1153 } 1154 } 1155 spec: (#struct){ 1156 bar: (#struct){ 1157 x: (int){ 1 } 1158 } 1159 } 1160 BAZ: (int){ 1 } 1161 b2: (int){ int } 1162 }) } 1163 t3: (struct){ |((struct){ 1164 #A: (#struct){ 1165 v: (int){ 1 } 1166 } 1167 BAZ: (int){ 1 } 1168 S: (#struct){ 1169 x: (int){ 1 } 1170 y: (int){ 1 } 1171 } 1172 #B: (#struct){ 1173 x: (int){ 1 } 1174 y: (int){ 1 } 1175 } 1176 f1: (int){ int } 1177 f2: (int){ int } 1178 }, (struct){ 1179 #A: (#struct){ 1180 v: (int){ 1 } 1181 } 1182 BAZ: (int){ 1 } 1183 S: (#struct){ 1184 x: (int){ 1 } 1185 y: (int){ 1 } 1186 } 1187 #B: (#struct){ 1188 x: (int){ 1 } 1189 y: (int){ 1 } 1190 } 1191 f1: (int){ int } 1192 b2: (int){ int } 1193 }, (struct){ 1194 #A: (#struct){ 1195 v: (int){ 1 } 1196 } 1197 BAZ: (int){ 1 } 1198 S: (#struct){ 1199 x: (int){ 1 } 1200 y: (int){ 1 } 1201 } 1202 #B: (#struct){ 1203 x: (int){ 1 } 1204 y: (int){ 1 } 1205 } 1206 b2: (int){ int } 1207 f2: (int){ int } 1208 }, (struct){ 1209 #A: (#struct){ 1210 v: (int){ 1 } 1211 } 1212 BAZ: (int){ 1 } 1213 S: (#struct){ 1214 x: (int){ 1 } 1215 y: (int){ 1 } 1216 } 1217 #B: (#struct){ 1218 x: (int){ 1 } 1219 y: (int){ 1 } 1220 } 1221 b2: (int){ int } 1222 }) } 1223 } 1224 full: (struct){ 1225 Foo: (#struct){ 1226 spec: (#struct){ 1227 foo: (#struct){ 1228 min: (int){ |(*(int){ 10 }, (int){ int }) } 1229 max: (int){ |(*(int){ 20 }, (int){ int }) } 1230 } 1231 } 1232 resource: (#struct){ 1233 _X: (#struct){ 1234 spec: ~(issue2209.full.Foo.spec) 1235 } 1236 spec: (#struct){ |(*(#struct){ 1237 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1238 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1239 minBar?: (null){ null } 1240 maxBar?: (null){ null } 1241 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1242 fuga?: (null){ null } 1243 }, (#struct){ 1244 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1245 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1246 minBar?: (null){ null } 1247 maxBar?: (null){ null } 1248 hoge?: (null){ null } 1249 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1250 }) } 1251 } 1252 } 1253 Bar: (#struct){ 1254 spec: (#struct){ 1255 bar: (#struct){ 1256 min: (int){ |(*(int){ 30 }, (int){ int }) } 1257 max: (int){ |(*(int){ 40 }, (int){ int }) } 1258 } 1259 } 1260 resource: (#struct){ 1261 _X: (#struct){ 1262 spec: ~(issue2209.full.Bar.spec) 1263 } 1264 spec: (#struct){ |(*(#struct){ 1265 minFoo?: (null){ null } 1266 maxFoo?: (null){ null } 1267 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1268 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1269 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1270 fuga?: (null){ null } 1271 }, (#struct){ 1272 minFoo?: (null){ null } 1273 maxFoo?: (null){ null } 1274 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1275 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1276 hoge?: (null){ null } 1277 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1278 }) } 1279 } 1280 } 1281 #Abstract: (#struct){ 1282 spec: (#struct){ |(*(#struct){ 1283 foo: (#struct){ 1284 min: (int){ |(*(int){ 10 }, (int){ int }) } 1285 max: (int){ |(*(int){ 20 }, (int){ int }) } 1286 } 1287 }, (#struct){ 1288 bar: (#struct){ 1289 min: (int){ |(*(int){ 30 }, (int){ int }) } 1290 max: (int){ |(*(int){ 40 }, (int){ int }) } 1291 } 1292 }) } 1293 resource: (#struct){ 1294 _X: (#struct){ 1295 spec: (#struct){ |(*(#struct){ 1296 foo: (#struct){ 1297 min: (int){ |(*(int){ 10 }, (int){ int }) } 1298 max: (int){ |(*(int){ 20 }, (int){ int }) } 1299 } 1300 }, (#struct){ 1301 bar: (#struct){ 1302 min: (int){ |(*(int){ 30 }, (int){ int }) } 1303 max: (int){ |(*(int){ 40 }, (int){ int }) } 1304 } 1305 }) } 1306 } 1307 spec: (#struct){ |(*(#struct){ 1308 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1309 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1310 minBar?: (null){ null } 1311 maxBar?: (null){ null } 1312 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1313 fuga?: (null){ null } 1314 }, (#struct){ 1315 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1316 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1317 minBar?: (null){ null } 1318 maxBar?: (null){ null } 1319 hoge?: (null){ null } 1320 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1321 }) } 1322 } 1323 } 1324 _#Spec: (#struct){ |(*(#struct){ 1325 foo: (#struct){ 1326 min: (int){ |(*(int){ 10 }, (int){ int }) } 1327 max: (int){ |(*(int){ 20 }, (int){ int }) } 1328 } 1329 }, (#struct){ 1330 bar: (#struct){ 1331 min: (int){ |(*(int){ 30 }, (int){ int }) } 1332 max: (int){ |(*(int){ 40 }, (int){ int }) } 1333 } 1334 }) } 1335 _#SpecFoo: (#struct){ 1336 foo: (#struct){ 1337 min: (int){ |(*(int){ 10 }, (int){ int }) } 1338 max: (int){ |(*(int){ 20 }, (int){ int }) } 1339 } 1340 } 1341 _#SpecBar: (#struct){ 1342 bar: (#struct){ 1343 min: (int){ |(*(int){ 30 }, (int){ int }) } 1344 max: (int){ |(*(int){ 40 }, (int){ int }) } 1345 } 1346 } 1347 _Thing: (#struct){ 1348 _X: (_){ _ } 1349 spec: (#struct){ |(*(#struct){ 1350 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1351 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1352 minBar?: (null){ null } 1353 maxBar?: (null){ null } 1354 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1355 fuga?: (null){ null } 1356 }, *(#struct){ 1357 minFoo?: (null){ null } 1358 maxFoo?: (null){ null } 1359 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1360 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1361 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1362 fuga?: (null){ null } 1363 }, (#struct){ 1364 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1365 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1366 minBar?: (null){ null } 1367 maxBar?: (null){ null } 1368 hoge?: (null){ null } 1369 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1370 }, (#struct){ 1371 minFoo?: (null){ null } 1372 maxFoo?: (null){ null } 1373 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1374 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1375 hoge?: (null){ null } 1376 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1377 }) } 1378 } 1379 #Constrained: (#struct){ 1380 spec: (#struct){ |(*(#struct){ 1381 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1382 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1383 minBar?: (null){ null } 1384 maxBar?: (null){ null } 1385 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1386 fuga?: (null){ null } 1387 }, *(#struct){ 1388 minFoo?: (null){ null } 1389 maxFoo?: (null){ null } 1390 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1391 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1392 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1393 fuga?: (null){ null } 1394 }, (#struct){ 1395 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1396 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1397 minBar?: (null){ null } 1398 maxBar?: (null){ null } 1399 hoge?: (null){ null } 1400 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1401 }, (#struct){ 1402 minFoo?: (null){ null } 1403 maxFoo?: (null){ null } 1404 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1405 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1406 hoge?: (null){ null } 1407 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1408 }) } 1409 } 1410 #Base: (#struct){ 1411 spec: (#struct){ 1412 minFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 1413 maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 1414 minBar?: ((null|int)){ |((null){ null }, (int){ int }) } 1415 maxBar?: ((null|int)){ |((null){ null }, (int){ int }) } 1416 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1417 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1418 } 1419 } 1420 } 1421 } 1422 issue2246: (struct){ 1423 simplified: (struct){ 1424 #FormFoo: (#struct){ 1425 fooID: (string){ string } 1426 } 1427 #FormBar: (#struct){ 1428 barID: (string){ string } 1429 } 1430 #Form: (#struct){ |((#struct){ 1431 fooID: (string){ string } 1432 }, (#struct){ 1433 barID: (string){ string } 1434 }) } 1435 data: (struct){ 1436 fooID: (string){ "123" } 1437 } 1438 out1: (#struct){ 1439 fooID: (string){ "123" } 1440 } 1441 out2: (#struct){ 1442 fooID: (string){ "123" } 1443 } 1444 } 1445 full: (struct){ 1446 data: (struct){ 1447 forms: (#list){ 1448 0: (struct){ 1449 fooID: (string){ "00-0000001" } 1450 } 1451 } 1452 } 1453 form1040: (#list){ 1454 0: (int){ 3 } 1455 } 1456 #K1: (#struct){ 1457 #_base: (#struct){ 1458 common: (int){ 3 } 1459 } 1460 #FormFoo: (#struct){ 1461 fooID: (string){ string } 1462 common: (int){ 3 } 1463 } 1464 #FormBar: (#struct){ 1465 barID: (string){ string } 1466 common: (int){ 3 } 1467 } 1468 #Form: (#struct){ |((#struct){ 1469 fooID: (string){ string } 1470 common: (int){ 3 } 1471 }, (#struct){ 1472 barID: (string){ string } 1473 common: (int){ 3 } 1474 }) } 1475 } 1476 #Input: (#struct){ 1477 forms: (list){ 1478 } 1479 } 1480 #summarizeReturn: (#struct){ 1481 in: ~(issue2246.full.#Input) 1482 out: (#list){ 1483 } 1484 } 1485 #compute: (#struct){ 1486 in: ~(issue2246.full.#Input) 1487 out: (#list){ 1488 } 1489 } 1490 } 1491 } 1492 issue2263: (struct){ 1493 simplified: (struct){ 1494 metrics: (#struct){ 1495 id: (string){ "foo" } 1496 avg: (int){ 60 } 1497 } 1498 #Metric: (#struct){ |((#struct){ 1499 id: (string){ string } 1500 avg: (number){ number } 1501 }, (#struct){ 1502 id: (string){ string } 1503 }, (#struct){ 1504 avg: (number){ number } 1505 }, (#struct){ 1506 }) } 1507 #IDSource: (#struct){ 1508 id: (string){ string } 1509 } 1510 #TargetAverage: (#struct){ 1511 avg: (number){ number } 1512 } 1513 } 1514 full: (struct){ 1515 metrics: (#list){ 1516 0: (#struct){ 1517 id: (string){ "foo" } 1518 avg: (int){ 60 } 1519 } 1520 1: (#struct){ 1521 id: (string){ "bar" } 1522 value: (int){ 80 } 1523 } 1524 2: (#struct){ 1525 uri: (string){ "baz" } 1526 avg: (int){ 70 } 1527 } 1528 3: (#struct){ 1529 uri: (string){ "qux" } 1530 value: (int){ 90 } 1531 } 1532 } 1533 #Metric: (#struct){ |((#struct){ 1534 id: (string){ string } 1535 avg: (number){ number } 1536 }, (#struct){ 1537 id: (string){ string } 1538 value: (number){ number } 1539 }, (#struct){ 1540 uri: (string){ string } 1541 avg: (number){ number } 1542 }, (#struct){ 1543 uri: (string){ string } 1544 value: (number){ number } 1545 }) } 1546 #Source: (#struct){ |((#struct){ 1547 id: (string){ string } 1548 }, (#struct){ 1549 uri: (string){ string } 1550 }) } 1551 #Target: (#struct){ |((#struct){ 1552 avg: (number){ number } 1553 }, (#struct){ 1554 value: (number){ number } 1555 }) } 1556 #IDSource: (#struct){ 1557 id: (string){ string } 1558 } 1559 #URISource: (#struct){ 1560 uri: (string){ string } 1561 } 1562 #TargetAverage: (#struct){ 1563 avg: (number){ number } 1564 } 1565 #TargetValue: (#struct){ 1566 value: (number){ number } 1567 } 1568 } 1569 } 1570 issue3149: (struct){ 1571 #valid: (#struct){ 1572 name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) } 1573 } 1574 list: (#list){ 1575 0: (#struct){ 1576 name: (string){ "FooBarFoo" } 1577 } 1578 1: (#struct){ 1579 name: (string){ "FooBazFoo" } 1580 } 1581 2: (#struct){ 1582 name: (string){ "FooQuuxFoo" } 1583 } 1584 3: (#struct){ 1585 name: (string){ "an exception" } 1586 } 1587 } 1588 } 1589 issue3528: (struct){ 1590 original: (struct){ 1591 workflows: (#list){ 1592 0: (#struct){ 1593 container: (#struct){ 1594 } 1595 #container: ((string|struct)){ |((string){ string }, (#struct){ 1596 volumes?: (list){ 1597 } 1598 }) } 1599 } 1600 } 1601 test: (#struct){ 1602 container: (#struct){ 1603 } 1604 #container: ((string|struct)){ |((string){ string }, (#struct){ 1605 volumes?: (list){ 1606 } 1607 }) } 1608 } 1609 #Workflow: (#struct){ 1610 container: (#struct){ 1611 } 1612 #container: ((string|struct)){ |((string){ string }, (#struct){ 1613 volumes?: (list){ 1614 } 1615 }) } 1616 } 1617 } 1618 reduced: (struct){ 1619 a: (#struct){ 1620 A: (#struct){ 1621 } 1622 #a: ((int|struct)){ |((int){ 2 }, (#struct){ 1623 v: (int){ 1 } 1624 }) } 1625 } 1626 #A: (#struct){ 1627 A: (#struct){ 1628 } 1629 #a: ((int|struct)){ |((int){ 2 }, (#struct){ 1630 v: (int){ 1 } 1631 }) } 1632 } 1633 } 1634 counter: (struct){ 1635 } 1636 nested: (struct){ 1637 t1: ((int|struct)){ |((struct){ 1638 v: (int){ 1 } 1639 }, (int){ 2 }, (int){ 3 }) } 1640 t2: ((int|struct)){ |((struct){ 1641 v: (int){ 1 } 1642 }, (int){ 2 }) } 1643 } 1644 } 1645 issue3784: (struct){ 1646 reduced: (struct){ 1647 #Schema: (#struct){ 1648 a: (#struct){ |((#struct){ 1649 kind: (string){ "A" } 1650 b: (#struct){ 1651 c?: (string){ string } 1652 } 1653 }, (#struct){ 1654 kind: (string){ "B" } 1655 }) } 1656 } 1657 out: (#struct){ 1658 a: (#struct){ 1659 kind: (string){ "A" } 1660 b: (#struct){ 1661 c: (string){ "x" } 1662 } 1663 } 1664 } 1665 } 1666 full: (struct){ 1667 #Schema: (#struct){ 1668 pages?: (#struct){ |((#struct){ 1669 build_type!: (string){ "legacy" } 1670 source!: (#struct){ 1671 branch!: (string){ string } 1672 path?: (string){ string } 1673 } 1674 cname?: (string){ string } 1675 }, (#struct){ 1676 build_type!: (string){ "workflow" } 1677 source?: (_|_){ 1678 // [eval] issue3784.full.#Schema.pages.source: field not allowed: 1679 // ./issue3784.cue:20:4 1680 branch?: (string){ string } 1681 path?: (string){ string } 1682 } 1683 cname?: (string){ string } 1684 }) } 1685 } 1686 out: (#struct){ 1687 pages: (#struct){ 1688 cname: (string){ "foo.com" } 1689 build_type: (string){ "legacy" } 1690 source: (#struct){ 1691 branch: (string){ "main" } 1692 path: (string){ "/" } 1693 } 1694 } 1695 } 1696 } 1697 variant1: (struct){ 1698 #Schema: (#struct){ 1699 pages: (#struct){ 1700 build_type!: (string){ "legacy" } 1701 source: (#struct){ 1702 branch!: (string){ string } 1703 path?: (string){ string } 1704 } 1705 cname?: (string){ string } 1706 } 1707 } 1708 } 1709 variant2: (struct){ 1710 #Schema: (#struct){ |((#struct){ 1711 build_type!: (string){ "legacy" } 1712 source!: (#struct){ 1713 branch!: (_){ _ } 1714 } 1715 }, (#struct){ 1716 build_type!: (string){ "workflow" } 1717 cname?: (_){ _ } 1718 }) } 1719 a: (#struct){ 1720 build_type!: (string){ "legacy" } 1721 source: (#struct){ 1722 branch!: (string){ string } 1723 path?: (_|_){ 1724 // [eval] issue3784.variant2.a.source.path: field not allowed: 1725 // ./issue3784.cue:83:4 1726 } 1727 } 1728 cname?: (_|_){ 1729 // [eval] issue3784.variant2.a.cname: field not allowed: 1730 // ./issue3784.cue:85:3 1731 } 1732 } 1733 } 1734 } 1735 issue770: (struct){ 1736 #A: (#struct){ 1737 v: (string){ |((string){ "a" }, (string){ "b" }, (string){ "c" }) } 1738 } 1739 h: (struct){ 1740 a: (#struct){ 1741 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 1742 } 1743 b: (#struct){ 1744 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 1745 } 1746 boo: (#struct){ 1747 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 1748 } 1749 c: (#struct){ 1750 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 1751 } 1752 coo: (#struct){ 1753 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 1754 } 1755 } 1756 } 1757 } 1758 -- diff/-out/evalalpha<==>+out/eval -- 1759 diff old new 1760 --- old 1761 +++ new 1762 @@ -1,58 +1,4 @@ 1763 -Errors: 1764 -issue1417.ids.2: 2 errors in empty disjunction: 1765 -issue2209.full.Bar.resource.spec: 6 errors in empty disjunction: 1766 -issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 1767 -issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 1768 - ./issue2209full.cue:43:7 1769 - ./issue2209full.cue:48:13 1770 - ./issue2209full.cue:67:10 1771 - ./issue2209full.cue:83:16 1772 - ./issue2209full.cue:87:13 1773 - ./issue2209full.cue:107:20 1774 -issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 1775 -issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 1776 - ./issue2209full.cue:43:7 1777 - ./issue2209full.cue:48:13 1778 - ./issue2209full.cue:55:16 1779 - ./issue2209full.cue:71:4 1780 - ./issue2209full.cue:72:13 1781 - ./issue2209full.cue:92:13 1782 -issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 1783 - ./issue2209full.cue:43:7 1784 - ./issue2209full.cue:48:13 1785 - ./issue2209full.cue:67:10 1786 - ./issue2209full.cue:83:16 1787 - ./issue2209full.cue:92:13 1788 - ./issue2209full.cue:105:20 1789 -issue3149.list.3.name: 2 errors in empty disjunction: 1790 -issue1417.ids.1: invalid value "ab" (out of bound !~"^a"): 1791 - ./issue1417.cue:2:7 1792 - ./issue1417.cue:4:11 1793 - ./issue1417.cue:4:26 1794 -issue1417.ids.2: invalid value "aB" (out of bound !~"^a"): 1795 - ./issue1417.cue:2:7 1796 - ./issue1417.cue:4:11 1797 - ./issue1417.cue:4:32 1798 -issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"): 1799 - ./issue1417.cue:3:16 1800 - ./issue1417.cue:4:11 1801 - ./issue1417.cue:4:32 1802 -issue2209.simplified.t3.BAZ: undefined field: y: 1803 - ./issue2209full.cue:35:9 1804 -issue2209.full.Bar.resource.spec.minBar: undefined field: min: 1805 - ./issue2209full.cue:77:25 1806 -issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"): 1807 - ./issue3149.cue:3:13 1808 - ./issue3149.cue:3:10 1809 - ./issue3149.cue:10:10 1810 -issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"): 1811 - ./issue3149.cue:3:46 1812 - ./issue3149.cue:3:10 1813 - ./issue3149.cue:10:10 1814 - 1815 -Result: 1816 -(_|_){ 1817 - // [eval] 1818 +(struct){ 1819 disambiguateClosed: (struct){ 1820 b: (#struct){ |((#struct){ 1821 x: (bool){ true } 1822 @@ -181,7 +127,7 @@ 1823 x: ((null|struct)){ |((struct){ 1824 a: (struct){ 1825 b: (_|_){ 1826 - // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1 & 1 & 1,d:1 & 1 & 1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3): 1827 + // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1,d:1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3): 1828 // ./in.cue:138:15 1829 // ./in.cue:124:15 1830 // ./in.cue:125:12 1831 @@ -349,10 +295,6 @@ 1832 #type: (#struct){ 1833 fieldName: ((string|struct)){ |((string){ string }, (#struct){ 1834 foo: (string){ string } 1835 - }, (#struct){ 1836 - bar: ((string|struct)){ |((string){ string }, (#struct){ 1837 - foo: (string){ string } 1838 - }) } 1839 }) } 1840 } 1841 #subtype: ((string|struct)){ |((string){ string }, (#struct){ 1842 @@ -432,12 +374,8 @@ 1843 #T: (list){ 1844 0: (string){ "d" } 1845 } 1846 - x: (list){ 1847 - 0: (string){ "d" } 1848 - } 1849 - #X: (list){ 1850 - 0: (string){ "d" } 1851 - } 1852 + x: ~(noHang.#T) 1853 + #X: ~(noHang.#T) 1854 } 1855 issue1940: (struct){ 1856 #T: (#list){ 1857 @@ -446,53 +384,24 @@ 1858 } 1859 } 1860 #A: (#struct){ 1861 - type: (#list){ 1862 - 0: (string){ "d" } 1863 - 1: (list){ 1864 - } 1865 - } 1866 + type: ~(issue1940.#T) 1867 } 1868 #B: (#struct){ 1869 } 1870 #C: (#struct){ 1871 - x: (#struct){ 1872 - type: (#list){ 1873 - 0: (string){ "d" } 1874 - 1: (list){ 1875 - } 1876 - } 1877 - } 1878 - } 1879 - } 1880 - issue1417: (_|_){ 1881 - // [eval] 1882 + x: ~(issue1940.#A) 1883 + } 1884 + } 1885 + issue1417: (struct){ 1886 #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) } 1887 - ids: (_|_){ 1888 - // [eval] 1889 + ids: (#list){ 1890 0: (string){ "xyz" } 1891 - 1: (_|_){ 1892 - // [eval] issue1417.ids.1: invalid value "ab" (out of bound !~"^a"): 1893 - // ./issue1417.cue:2:7 1894 - // ./issue1417.cue:4:11 1895 - // ./issue1417.cue:4:26 1896 - } 1897 - 2: (_|_){ 1898 - // [eval] issue1417.ids.2: 2 errors in empty disjunction: 1899 - // issue1417.ids.2: invalid value "aB" (out of bound !~"^a"): 1900 - // ./issue1417.cue:2:7 1901 - // ./issue1417.cue:4:11 1902 - // ./issue1417.cue:4:32 1903 - // issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"): 1904 - // ./issue1417.cue:3:16 1905 - // ./issue1417.cue:4:11 1906 - // ./issue1417.cue:4:32 1907 - } 1908 - } 1909 - } 1910 - issue2209: (_|_){ 1911 - // [eval] 1912 - simplified: (_|_){ 1913 - // [eval] 1914 + 1: (string){ "ab" } 1915 + 2: (string){ "aB" } 1916 + } 1917 + } 1918 + issue2209: (struct){ 1919 + simplified: (struct){ 1920 t1: (struct){ 1921 #SpecFoo: (#struct){ 1922 foo: (#struct){ 1923 @@ -510,93 +419,159 @@ 1924 } 1925 } 1926 out: (struct){ |((struct){ 1927 - X: (#struct){ 1928 - bar: (#struct){ 1929 - min: (int){ 1 } 1930 - } 1931 - } 1932 - nullFoo: (null){ null } 1933 - minFoo: (int){ int } 1934 - }, (struct){ 1935 - minBar: (int){ int } 1936 - X: (#struct){ 1937 - bar: (#struct){ 1938 - min: (int){ 1 } 1939 - } 1940 - } 1941 - nullFoo: (null){ null } 1942 - }, (struct){ 1943 - X: (#struct){ 1944 - bar: (#struct){ 1945 - min: (int){ 1 } 1946 - } 1947 - } 1948 - nullBar: (null){ null } 1949 - minFoo: (int){ int } 1950 - }, (struct){ 1951 - minBar: (int){ int } 1952 - X: (#struct){ 1953 - bar: (#struct){ 1954 - min: (int){ 1 } 1955 - } 1956 - } 1957 - nullBar: (null){ null } 1958 - }) } 1959 - } 1960 - t2: (_|_){ 1961 - // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x: 1962 - // ./issue2209full.cue:24:17 1963 - #SpecFoo: (#struct){ 1964 - foo: (#struct){ 1965 - } 1966 - } 1967 - #SpecBar: (#struct){ 1968 - bar: (#struct){ 1969 - x: (int){ 1 } 1970 - } 1971 - } 1972 - spec: (#struct){ |(*(#struct){ 1973 - bar: (struct){ 1974 - } 1975 - foo: (#struct){ 1976 - } 1977 - }, (#struct){ 1978 - bar: (#struct){ 1979 - x: (int){ 1 } 1980 - } 1981 - }) } 1982 - BAZ: (_|_){ 1983 - // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x: 1984 - // ./issue2209full.cue:24:17 1985 - } 1986 - b2: (int){ int } 1987 - } 1988 - t3: (_|_){ 1989 - // [eval] issue2209.simplified.t3.BAZ: undefined field: y: 1990 - // ./issue2209full.cue:35:9 1991 - #A: (#struct){ 1992 - v: (int){ 1 } 1993 - } 1994 - BAZ: (_|_){ 1995 - // [eval] issue2209.simplified.t3.BAZ: undefined field: y: 1996 - // ./issue2209full.cue:35:9 1997 - } 1998 - S: (#struct){ |(*(#struct){ 1999 - x: (int){ 1 } 2000 - v: (int){ 1 } 2001 - }, (#struct){ 2002 - x: (int){ 1 } 2003 - y: (int){ 1 } 2004 - }) } 2005 - #B: (#struct){ 2006 - x: (int){ 1 } 2007 - y: (int){ 1 } 2008 - } 2009 - b2: (int){ int } 2010 - } 2011 - } 2012 - full: (_|_){ 2013 - // [eval] 2014 + minBar: (int){ 1 } 2015 + X: ~(issue2209.simplified.t1.spec) 2016 + nullFoo: (null){ null } 2017 + minFoo: (int){ int } 2018 + }, (struct){ 2019 + minBar: (int){ 1 } 2020 + X: ~(issue2209.simplified.t1.spec) 2021 + nullFoo: (null){ null } 2022 + }, (struct){ 2023 + minBar: (int){ 1 } 2024 + X: ~(issue2209.simplified.t1.spec) 2025 + nullBar: (null){ null } 2026 + minFoo: (int){ int } 2027 + }, (struct){ 2028 + minBar: (int){ 1 } 2029 + X: ~(issue2209.simplified.t1.spec) 2030 + nullBar: (null){ null } 2031 + }) } 2032 + } 2033 + t2: (struct){ |((struct){ 2034 + #SpecFoo: (#struct){ 2035 + foo: (#struct){ 2036 + } 2037 + } 2038 + #SpecBar: (#struct){ 2039 + bar: (#struct){ 2040 + x: (int){ 1 } 2041 + } 2042 + } 2043 + spec: (#struct){ 2044 + bar: (#struct){ 2045 + x: (int){ 1 } 2046 + } 2047 + } 2048 + BAZ: (int){ 1 } 2049 + f1: (int){ int } 2050 + f2: (int){ int } 2051 + }, (struct){ 2052 + #SpecFoo: (#struct){ 2053 + foo: (#struct){ 2054 + } 2055 + } 2056 + #SpecBar: (#struct){ 2057 + bar: (#struct){ 2058 + x: (int){ 1 } 2059 + } 2060 + } 2061 + spec: (#struct){ 2062 + bar: (#struct){ 2063 + x: (int){ 1 } 2064 + } 2065 + } 2066 + BAZ: (int){ 1 } 2067 + f1: (int){ int } 2068 + b2: (int){ int } 2069 + }, (struct){ 2070 + #SpecFoo: (#struct){ 2071 + foo: (#struct){ 2072 + } 2073 + } 2074 + #SpecBar: (#struct){ 2075 + bar: (#struct){ 2076 + x: (int){ 1 } 2077 + } 2078 + } 2079 + spec: (#struct){ 2080 + bar: (#struct){ 2081 + x: (int){ 1 } 2082 + } 2083 + } 2084 + BAZ: (int){ 1 } 2085 + b2: (int){ int } 2086 + f2: (int){ int } 2087 + }, (struct){ 2088 + #SpecFoo: (#struct){ 2089 + foo: (#struct){ 2090 + } 2091 + } 2092 + #SpecBar: (#struct){ 2093 + bar: (#struct){ 2094 + x: (int){ 1 } 2095 + } 2096 + } 2097 + spec: (#struct){ 2098 + bar: (#struct){ 2099 + x: (int){ 1 } 2100 + } 2101 + } 2102 + BAZ: (int){ 1 } 2103 + b2: (int){ int } 2104 + }) } 2105 + t3: (struct){ |((struct){ 2106 + #A: (#struct){ 2107 + v: (int){ 1 } 2108 + } 2109 + BAZ: (int){ 1 } 2110 + S: (#struct){ 2111 + x: (int){ 1 } 2112 + y: (int){ 1 } 2113 + } 2114 + #B: (#struct){ 2115 + x: (int){ 1 } 2116 + y: (int){ 1 } 2117 + } 2118 + f1: (int){ int } 2119 + f2: (int){ int } 2120 + }, (struct){ 2121 + #A: (#struct){ 2122 + v: (int){ 1 } 2123 + } 2124 + BAZ: (int){ 1 } 2125 + S: (#struct){ 2126 + x: (int){ 1 } 2127 + y: (int){ 1 } 2128 + } 2129 + #B: (#struct){ 2130 + x: (int){ 1 } 2131 + y: (int){ 1 } 2132 + } 2133 + f1: (int){ int } 2134 + b2: (int){ int } 2135 + }, (struct){ 2136 + #A: (#struct){ 2137 + v: (int){ 1 } 2138 + } 2139 + BAZ: (int){ 1 } 2140 + S: (#struct){ 2141 + x: (int){ 1 } 2142 + y: (int){ 1 } 2143 + } 2144 + #B: (#struct){ 2145 + x: (int){ 1 } 2146 + y: (int){ 1 } 2147 + } 2148 + b2: (int){ int } 2149 + f2: (int){ int } 2150 + }, (struct){ 2151 + #A: (#struct){ 2152 + v: (int){ 1 } 2153 + } 2154 + BAZ: (int){ 1 } 2155 + S: (#struct){ 2156 + x: (int){ 1 } 2157 + y: (int){ 1 } 2158 + } 2159 + #B: (#struct){ 2160 + x: (int){ 1 } 2161 + y: (int){ 1 } 2162 + } 2163 + b2: (int){ int } 2164 + }) } 2165 + } 2166 + full: (struct){ 2167 Foo: (#struct){ 2168 spec: (#struct){ 2169 foo: (#struct){ 2170 @@ -605,135 +580,52 @@ 2171 } 2172 } 2173 resource: (#struct){ 2174 - spec: (#struct){ |(*(#struct){ 2175 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2176 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2177 - minBar?: (null){ null } 2178 - maxBar?: (null){ null } 2179 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2180 - fuga?: (null){ null } 2181 - }, (#struct){ 2182 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2183 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2184 - minBar?: (null){ null } 2185 - maxBar?: (null){ null } 2186 - hoge?: (null){ null } 2187 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2188 - }) } 2189 - _X: (#struct){ 2190 - spec: (#struct){ |(*(#struct){ 2191 - foo: (#struct){ 2192 - min: (int){ |(*(int){ 10 }, (int){ int }) } 2193 - max: (int){ |(*(int){ 20 }, (int){ int }) } 2194 - } 2195 - }, (#struct){ 2196 - foo: (#struct){ 2197 - } 2198 - bar: (#struct){ 2199 - min: (int){ |(*(int){ 30 }, (int){ int }) } 2200 - max: (int){ |(*(int){ 40 }, (int){ int }) } 2201 - } 2202 - }) } 2203 - } 2204 - } 2205 - } 2206 - Bar: (_|_){ 2207 - // [eval] 2208 - spec: (#struct){ 2209 - bar: (#struct){ 2210 - min: (int){ |(*(int){ 30 }, (int){ int }) } 2211 - max: (int){ |(*(int){ 40 }, (int){ int }) } 2212 - } 2213 - } 2214 - resource: (_|_){ 2215 - // [eval] 2216 - spec: (_|_){ 2217 - // [eval] issue2209.full.Bar.resource.spec: 6 errors in empty disjunction: 2218 - // issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 2219 - // issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 2220 - // ./issue2209full.cue:43:7 2221 - // ./issue2209full.cue:48:13 2222 - // ./issue2209full.cue:67:10 2223 - // ./issue2209full.cue:83:16 2224 - // ./issue2209full.cue:87:13 2225 - // ./issue2209full.cue:107:20 2226 - // issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 2227 - // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 2228 - // ./issue2209full.cue:43:7 2229 - // ./issue2209full.cue:48:13 2230 - // ./issue2209full.cue:55:16 2231 - // ./issue2209full.cue:71:4 2232 - // ./issue2209full.cue:72:13 2233 - // ./issue2209full.cue:92:13 2234 - // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 2235 - // ./issue2209full.cue:43:7 2236 - // ./issue2209full.cue:48:13 2237 - // ./issue2209full.cue:67:10 2238 - // ./issue2209full.cue:83:16 2239 - // ./issue2209full.cue:92:13 2240 - // ./issue2209full.cue:105:20 2241 - // issue2209.full.Bar.resource.spec.minBar: undefined field: min: 2242 - // ./issue2209full.cue:77:25 2243 - minFoo: (_|_){ 2244 - // [eval] issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 2245 - // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 2246 - // ./issue2209full.cue:43:7 2247 - // ./issue2209full.cue:48:13 2248 - // ./issue2209full.cue:55:16 2249 - // ./issue2209full.cue:71:4 2250 - // ./issue2209full.cue:72:13 2251 - // ./issue2209full.cue:92:13 2252 - // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 2253 - // ./issue2209full.cue:43:7 2254 - // ./issue2209full.cue:48:13 2255 - // ./issue2209full.cue:67:10 2256 - // ./issue2209full.cue:83:16 2257 - // ./issue2209full.cue:92:13 2258 - // ./issue2209full.cue:105:20 2259 - } 2260 - maxFoo: (_|_){ 2261 - // [eval] issue2209.full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction: 2262 - // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int): 2263 - // ./issue2209full.cue:43:7 2264 - // ./issue2209full.cue:48:13 2265 - // ./issue2209full.cue:56:16 2266 - // ./issue2209full.cue:71:4 2267 - // ./issue2209full.cue:73:13 2268 - // ./issue2209full.cue:93:13 2269 - // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int): 2270 - // ./issue2209full.cue:43:7 2271 - // ./issue2209full.cue:48:13 2272 - // ./issue2209full.cue:67:10 2273 - // ./issue2209full.cue:83:16 2274 - // ./issue2209full.cue:93:13 2275 - // ./issue2209full.cue:106:20 2276 - } 2277 - minBar: (_|_){ 2278 - // [eval] issue2209.full.Bar.resource.spec.minBar: undefined field: min: 2279 - // ./issue2209full.cue:77:25 2280 - } 2281 - maxBar: (_|_){ 2282 - // [eval] issue2209.full.Bar.resource.spec.maxBar: undefined field: max: 2283 - // ./issue2209full.cue:78:25 2284 - } 2285 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2286 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2287 - } 2288 - _X: (#struct){ 2289 - spec: (#struct){ |(*(#struct){ 2290 - bar: (#struct){ 2291 - } 2292 - foo: (#struct){ 2293 - min: (int){ |(*(int){ 10 }, (int){ int }) } 2294 - max: (int){ |(*(int){ 20 }, (int){ int }) } 2295 - } 2296 - }, (#struct){ 2297 - bar: (#struct){ 2298 - min: (int){ |(*(int){ 30 }, (int){ int }) } 2299 - max: (int){ |(*(int){ 40 }, (int){ int }) } 2300 - } 2301 - }) } 2302 - } 2303 + _X: (#struct){ 2304 + spec: ~(issue2209.full.Foo.spec) 2305 + } 2306 + spec: (#struct){ |(*(#struct){ 2307 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2308 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2309 + minBar?: (null){ null } 2310 + maxBar?: (null){ null } 2311 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2312 + fuga?: (null){ null } 2313 + }, (#struct){ 2314 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2315 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2316 + minBar?: (null){ null } 2317 + maxBar?: (null){ null } 2318 + hoge?: (null){ null } 2319 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2320 + }) } 2321 + } 2322 + } 2323 + Bar: (#struct){ 2324 + spec: (#struct){ 2325 + bar: (#struct){ 2326 + min: (int){ |(*(int){ 30 }, (int){ int }) } 2327 + max: (int){ |(*(int){ 40 }, (int){ int }) } 2328 + } 2329 + } 2330 + resource: (#struct){ 2331 + _X: (#struct){ 2332 + spec: ~(issue2209.full.Bar.spec) 2333 + } 2334 + spec: (#struct){ |(*(#struct){ 2335 + minFoo?: (null){ null } 2336 + maxFoo?: (null){ null } 2337 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2338 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2339 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2340 + fuga?: (null){ null } 2341 + }, (#struct){ 2342 + minFoo?: (null){ null } 2343 + maxFoo?: (null){ null } 2344 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2345 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2346 + hoge?: (null){ null } 2347 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2348 + }) } 2349 } 2350 } 2351 #Abstract: (#struct){ 2352 @@ -749,34 +641,34 @@ 2353 } 2354 }) } 2355 resource: (#struct){ 2356 - spec: (#struct){ |(*(#struct){ 2357 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2358 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2359 - minBar?: (null){ null } 2360 - maxBar?: (null){ null } 2361 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2362 - fuga?: (null){ null } 2363 - }, (#struct){ 2364 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2365 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2366 - minBar?: (null){ null } 2367 - maxBar?: (null){ null } 2368 - hoge?: (null){ null } 2369 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2370 - }) } 2371 - _X: (#struct){ 2372 - spec: (#struct){ |(*(#struct){ 2373 - foo: (#struct){ 2374 - min: (int){ |(*(int){ 10 }, (int){ int }) } 2375 - max: (int){ |(*(int){ 20 }, (int){ int }) } 2376 - } 2377 - }, (#struct){ 2378 - bar: (#struct){ 2379 - min: (int){ |(*(int){ 30 }, (int){ int }) } 2380 - max: (int){ |(*(int){ 40 }, (int){ int }) } 2381 - } 2382 - }) } 2383 - } 2384 + _X: (#struct){ 2385 + spec: (#struct){ |(*(#struct){ 2386 + foo: (#struct){ 2387 + min: (int){ |(*(int){ 10 }, (int){ int }) } 2388 + max: (int){ |(*(int){ 20 }, (int){ int }) } 2389 + } 2390 + }, (#struct){ 2391 + bar: (#struct){ 2392 + min: (int){ |(*(int){ 30 }, (int){ int }) } 2393 + max: (int){ |(*(int){ 40 }, (int){ int }) } 2394 + } 2395 + }) } 2396 + } 2397 + spec: (#struct){ |(*(#struct){ 2398 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2399 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2400 + minBar?: (null){ null } 2401 + maxBar?: (null){ null } 2402 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2403 + fuga?: (null){ null } 2404 + }, (#struct){ 2405 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2406 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2407 + minBar?: (null){ null } 2408 + maxBar?: (null){ null } 2409 + hoge?: (null){ null } 2410 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2411 + }) } 2412 } 2413 } 2414 _#Spec: (#struct){ |(*(#struct){ 2415 @@ -803,36 +695,36 @@ 2416 } 2417 } 2418 _Thing: (#struct){ 2419 - spec: (#struct){ |(*(#struct){ 2420 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2421 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2422 - minBar?: (null){ null } 2423 - maxBar?: (null){ null } 2424 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2425 - fuga?: (null){ null } 2426 - }, *(#struct){ 2427 - minFoo?: (null){ null } 2428 - maxFoo?: (null){ null } 2429 - minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2430 - maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2431 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2432 - fuga?: (null){ null } 2433 - }, (#struct){ 2434 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2435 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2436 - minBar?: (null){ null } 2437 - maxBar?: (null){ null } 2438 - hoge?: (null){ null } 2439 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2440 - }, (#struct){ 2441 - minFoo?: (null){ null } 2442 - maxFoo?: (null){ null } 2443 - minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2444 - maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2445 - hoge?: (null){ null } 2446 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2447 - }) } 2448 _X: (_){ _ } 2449 + spec: (#struct){ |(*(#struct){ 2450 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2451 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2452 + minBar?: (null){ null } 2453 + maxBar?: (null){ null } 2454 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2455 + fuga?: (null){ null } 2456 + }, *(#struct){ 2457 + minFoo?: (null){ null } 2458 + maxFoo?: (null){ null } 2459 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2460 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2461 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2462 + fuga?: (null){ null } 2463 + }, (#struct){ 2464 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 2465 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 2466 + minBar?: (null){ null } 2467 + maxBar?: (null){ null } 2468 + hoge?: (null){ null } 2469 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2470 + }, (#struct){ 2471 + minFoo?: (null){ null } 2472 + maxFoo?: (null){ null } 2473 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 2474 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 2475 + hoge?: (null){ null } 2476 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 2477 + }) } 2478 } 2479 #Constrained: (#struct){ 2480 spec: (#struct){ |(*(#struct){ 2481 @@ -916,19 +808,19 @@ 2482 common: (int){ 3 } 2483 } 2484 #FormFoo: (#struct){ 2485 - common: (int){ 3 } 2486 - fooID: (string){ string } 2487 + fooID: (string){ string } 2488 + common: (int){ 3 } 2489 } 2490 #FormBar: (#struct){ 2491 - common: (int){ 3 } 2492 - barID: (string){ string } 2493 + barID: (string){ string } 2494 + common: (int){ 3 } 2495 } 2496 #Form: (#struct){ |((#struct){ 2497 - common: (int){ 3 } 2498 fooID: (string){ string } 2499 - }, (#struct){ 2500 - common: (int){ 3 } 2501 + common: (int){ 3 } 2502 + }, (#struct){ 2503 barID: (string){ string } 2504 + common: (int){ 3 } 2505 }) } 2506 } 2507 #Input: (#struct){ 2508 @@ -936,18 +828,12 @@ 2509 } 2510 } 2511 #summarizeReturn: (#struct){ 2512 - in: (#struct){ 2513 - forms: (list){ 2514 - } 2515 - } 2516 + in: ~(issue2246.full.#Input) 2517 out: (#list){ 2518 } 2519 } 2520 #compute: (#struct){ 2521 - in: (#struct){ 2522 - forms: (list){ 2523 - } 2524 - } 2525 + in: ~(issue2246.full.#Input) 2526 out: (#list){ 2527 } 2528 } 2529 @@ -1031,13 +917,11 @@ 2530 } 2531 } 2532 } 2533 - issue3149: (_|_){ 2534 - // [eval] 2535 + issue3149: (struct){ 2536 #valid: (#struct){ 2537 name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) } 2538 } 2539 - list: (_|_){ 2540 - // [eval] 2541 + list: (#list){ 2542 0: (#struct){ 2543 name: (string){ "FooBarFoo" } 2544 } 2545 @@ -1047,19 +931,8 @@ 2546 2: (#struct){ 2547 name: (string){ "FooQuuxFoo" } 2548 } 2549 - 3: (_|_){ 2550 - // [eval] 2551 - name: (_|_){ 2552 - // [eval] issue3149.list.3.name: 2 errors in empty disjunction: 2553 - // issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"): 2554 - // ./issue3149.cue:3:13 2555 - // ./issue3149.cue:3:10 2556 - // ./issue3149.cue:10:10 2557 - // issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"): 2558 - // ./issue3149.cue:3:46 2559 - // ./issue3149.cue:3:10 2560 - // ./issue3149.cue:10:10 2561 - } 2562 + 3: (#struct){ 2563 + name: (string){ "an exception" } 2564 } 2565 } 2566 } 2567 @@ -1151,7 +1024,9 @@ 2568 cname?: (string){ string } 2569 }, (#struct){ 2570 build_type!: (string){ "workflow" } 2571 - source?: (#struct){ 2572 + source?: (_|_){ 2573 + // [eval] issue3784.full.#Schema.pages.source: field not allowed: 2574 + // ./issue3784.cue:20:4 2575 branch?: (string){ string } 2576 path?: (string){ string } 2577 } 2578 @@ -1160,12 +1035,12 @@ 2579 } 2580 out: (#struct){ 2581 pages: (#struct){ 2582 + cname: (string){ "foo.com" } 2583 build_type: (string){ "legacy" } 2584 source: (#struct){ 2585 branch: (string){ "main" } 2586 path: (string){ "/" } 2587 } 2588 - cname: (string){ "foo.com" } 2589 } 2590 } 2591 } 2592 @@ -1195,9 +1070,15 @@ 2593 build_type!: (string){ "legacy" } 2594 source: (#struct){ 2595 branch!: (string){ string } 2596 - path?: (string){ string } 2597 - } 2598 - cname?: (string){ string } 2599 + path?: (_|_){ 2600 + // [eval] issue3784.variant2.a.source.path: field not allowed: 2601 + // ./issue3784.cue:83:4 2602 + } 2603 + } 2604 + cname?: (_|_){ 2605 + // [eval] issue3784.variant2.a.cname: field not allowed: 2606 + // ./issue3784.cue:85:3 2607 + } 2608 } 2609 } 2610 } 2611 @@ -1216,10 +1097,10 @@ 2612 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 2613 } 2614 c: (#struct){ 2615 - v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) } 2616 + v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 2617 } 2618 coo: (#struct){ 2619 - v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) } 2620 + v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 2621 } 2622 } 2623 } 2624 -- out/evalalpha/stats -- 2625 Leaks: 2786 2626 Freed: 0 2627 Reused: 0 2628 Allocs: 2786 2629 Retain: 0 2630 2631 Unifications: 686 2632 Conjuncts: 2767 2633 Disjuncts: 1290 2634 2635 CloseIDElems: 5666 2636 NumCloseIDs: 317 2637 -- diff/-out/evalalpha/stats<==>+out/eval/stats -- 2638 diff old new 2639 --- old 2640 +++ new 2641 @@ -1,9 +1,12 @@ 2642 -Leaks: 9 2643 -Freed: 2786 2644 -Reused: 2771 2645 -Allocs: 24 2646 -Retain: 123 2647 - 2648 -Unifications: 1427 2649 -Conjuncts: 4068 2650 -Disjuncts: 2909 2651 +Leaks: 2786 2652 +Freed: 0 2653 +Reused: 0 2654 +Allocs: 2786 2655 +Retain: 0 2656 + 2657 +Unifications: 686 2658 +Conjuncts: 2767 2659 +Disjuncts: 1290 2660 + 2661 +CloseIDElems: 5666 2662 +NumCloseIDs: 317 2663 -- out/eval/stats -- 2664 Leaks: 9 2665 Freed: 2786 2666 Reused: 2771 2667 Allocs: 24 2668 Retain: 123 2669 2670 Unifications: 1427 2671 Conjuncts: 4068 2672 Disjuncts: 2909 2673 -- diff/todo/p2 -- 2674 noChildError.issue1808.#type: one disjunction options eliminated due to earlier detected structural cycle. May be okay, but investigate. 2675 issue2209.simplified.full._X: ditto 2676 -- diff/explanation -- 2677 issue2209.simplified.t2.BAZ: now fixed 2678 issue2209.simplified.t3.BAZ: missing error. 2679 issue2209.simplified.t3: new evaluator fixes known bug. 2680 preserveClosedness.medium.p*: discarding of default is correct. 2681 issue1417: new evaluator fixes known bug 2682 issue3149: new evaluator fixes known bug 2683 issue770: new evaluator fixes a bug in "c" and "coo" where defaults did not apply correctly. 2684 -- out/eval -- 2685 Errors: 2686 issue1417.ids.2: 2 errors in empty disjunction: 2687 issue2209.full.Bar.resource.spec: 6 errors in empty disjunction: 2688 issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 2689 issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 2690 ./issue2209full.cue:43:7 2691 ./issue2209full.cue:48:13 2692 ./issue2209full.cue:67:10 2693 ./issue2209full.cue:83:16 2694 ./issue2209full.cue:87:13 2695 ./issue2209full.cue:107:20 2696 issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 2697 issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 2698 ./issue2209full.cue:43:7 2699 ./issue2209full.cue:48:13 2700 ./issue2209full.cue:55:16 2701 ./issue2209full.cue:71:4 2702 ./issue2209full.cue:72:13 2703 ./issue2209full.cue:92:13 2704 issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 2705 ./issue2209full.cue:43:7 2706 ./issue2209full.cue:48:13 2707 ./issue2209full.cue:67:10 2708 ./issue2209full.cue:83:16 2709 ./issue2209full.cue:92:13 2710 ./issue2209full.cue:105:20 2711 issue3149.list.3.name: 2 errors in empty disjunction: 2712 issue1417.ids.1: invalid value "ab" (out of bound !~"^a"): 2713 ./issue1417.cue:2:7 2714 ./issue1417.cue:4:11 2715 ./issue1417.cue:4:26 2716 issue1417.ids.2: invalid value "aB" (out of bound !~"^a"): 2717 ./issue1417.cue:2:7 2718 ./issue1417.cue:4:11 2719 ./issue1417.cue:4:32 2720 issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"): 2721 ./issue1417.cue:3:16 2722 ./issue1417.cue:4:11 2723 ./issue1417.cue:4:32 2724 issue2209.simplified.t3.BAZ: undefined field: y: 2725 ./issue2209full.cue:35:9 2726 issue2209.full.Bar.resource.spec.minBar: undefined field: min: 2727 ./issue2209full.cue:77:25 2728 issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"): 2729 ./issue3149.cue:3:13 2730 ./issue3149.cue:3:10 2731 ./issue3149.cue:10:10 2732 issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"): 2733 ./issue3149.cue:3:46 2734 ./issue3149.cue:3:10 2735 ./issue3149.cue:10:10 2736 2737 Result: 2738 (_|_){ 2739 // [eval] 2740 disambiguateClosed: (struct){ 2741 b: (#struct){ |((#struct){ 2742 x: (bool){ true } 2743 }, (#struct){ 2744 y: (bool){ true } 2745 }) } 2746 a: (#struct){ |((#struct){ 2747 x: (bool){ true } 2748 }, (#struct){ 2749 y: (bool){ true } 2750 }) } 2751 #Def: (#struct){ |((#struct){ 2752 x: (bool){ true } 2753 }, (#struct){ 2754 y: (bool){ true } 2755 }) } 2756 } 2757 alwaysCheckMatchers1: (struct){ 2758 b: (struct){ 2759 c: (string){ "yyyyy" } 2760 } 2761 } 2762 alwaysCheckPatterns2: (struct){ 2763 a: (#struct){ 2764 c: (string){ "yyyyy" } 2765 } 2766 b: (#struct){ 2767 c: (string){ "yyyyy" } 2768 } 2769 #X: ((string|struct)){ |((string){ string }, (#struct){ 2770 c: (string){ string } 2771 }) } 2772 } 2773 nestedNonMonotonic: (struct){ 2774 resolved: (struct){ 2775 n1: (struct){ 2776 x: ((null|struct)){ |((struct){ 2777 a: (struct){ 2778 c: (int){ 1 } 2779 d: (int){ 1 } 2780 } 2781 }, (null){ null }) } 2782 } 2783 n2: (struct){ 2784 x: ((null|struct)){ |((struct){ 2785 a: (struct){ 2786 b: (struct){ 2787 c: (int){ 1 } 2788 d: (int){ 1 } 2789 } 2790 } 2791 }, (null){ null }) } 2792 } 2793 } 2794 eliminated: (struct){ 2795 n1: (struct){ 2796 p1: (struct){ 2797 x: (null){ null } 2798 } 2799 p2: (struct){ 2800 x: (null){ null } 2801 } 2802 } 2803 n2: (struct){ 2804 p1: (struct){ 2805 x: (null){ null } 2806 } 2807 p2: (struct){ 2808 x: (null){ null } 2809 } 2810 } 2811 } 2812 incomplete: (struct){ 2813 a: (struct){ 2814 n1: (struct){ 2815 p1: (struct){ 2816 x: (null){ null } 2817 } 2818 p2: (struct){ 2819 x: (null){ null } 2820 } 2821 } 2822 n2: (struct){ 2823 p1: (struct){ 2824 x: ((null|struct)){ |((struct){ 2825 a: (struct){ 2826 b: (_|_){ 2827 // [incomplete] nestedNonMonotonic.incomplete.a.n2.p1.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2): 2828 // ./in.cue:96:15 2829 // ./in.cue:96:32 2830 // ./in.cue:97:12 2831 c: (int){ 1 } 2832 } 2833 } 2834 }, (null){ null }) } 2835 } 2836 p2: (struct){ 2837 x: ((null|struct)){ |((struct){ 2838 a: (struct){ 2839 b: (_|_){ 2840 // [incomplete] nestedNonMonotonic.incomplete.a.n2.p2.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2): 2841 // ./in.cue:102:15 2842 // ./in.cue:101:12 2843 // ./in.cue:102:32 2844 c: (int){ 1 } 2845 } 2846 } 2847 }, (null){ null }) } 2848 } 2849 } 2850 } 2851 b: (struct){ 2852 n1: (struct){ 2853 p1: (struct){ 2854 x: (null){ null } 2855 } 2856 p2: (struct){ 2857 x: (null){ null } 2858 } 2859 p3: (struct){ 2860 x: (null){ null } 2861 } 2862 } 2863 n2: (struct){ 2864 p1: (struct){ 2865 x: ((null|struct)){ |((struct){ 2866 a: (struct){ 2867 b: (_|_){ 2868 // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1 & 1 & 1,d:1 & 1 & 1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3): 2869 // ./in.cue:138:15 2870 // ./in.cue:124:15 2871 // ./in.cue:125:12 2872 // ./in.cue:126:12 2873 // ./in.cue:130:12 2874 // ./in.cue:131:15 2875 // ./in.cue:132:12 2876 // ./in.cue:136:12 2877 // ./in.cue:137:12 2878 // ./in.cue:138:32 2879 c: (int){ 1 } 2880 d: (int){ 1 } 2881 } 2882 } 2883 }, (null){ null }) } 2884 } 2885 } 2886 } 2887 } 2888 } 2889 preserveClosedness: (struct){ 2890 small: (struct){ 2891 p1: (struct){ 2892 #A: (#struct){ |(*(#struct){ 2893 a: (string){ string } 2894 }, (#struct){ 2895 a: (string){ string } 2896 b: (int){ int } 2897 }) } 2898 #B: (#struct){ |(*(#struct){ 2899 }, (#struct){ 2900 b: (int){ int } 2901 }, (#struct){ 2902 a: (string){ string } 2903 }, (#struct){ 2904 a: (string){ string } 2905 b: (int){ int } 2906 }) } 2907 } 2908 p2: (struct){ 2909 #A: (#struct){ |(*(#struct){ 2910 a: (string){ string } 2911 }, (#struct){ 2912 a: (string){ string } 2913 b: (int){ int } 2914 }) } 2915 #B: (#struct){ |(*(#struct){ 2916 }, (#struct){ 2917 a: (string){ string } 2918 b: (int){ int } 2919 }, (#struct){ 2920 a: (string){ string } 2921 }, (#struct){ 2922 b: (int){ int } 2923 }) } 2924 } 2925 } 2926 medium: (struct){ 2927 p1: (struct){ 2928 #A: (#struct){ |(*(#struct){ 2929 a: (string){ string } 2930 }, (#struct){ 2931 a: (string){ string } 2932 c: (int){ int } 2933 }, (#struct){ 2934 a: (string){ string } 2935 d: (string){ string } 2936 }) } 2937 #B: (#struct){ |(*(#struct){ 2938 }, (#struct){ 2939 c: (int){ int } 2940 }, (#struct){ 2941 d: (string){ string } 2942 }, (#struct){ 2943 a: (string){ string } 2944 }, (#struct){ 2945 a: (string){ string } 2946 c: (int){ int } 2947 }, (#struct){ 2948 a: (string){ string } 2949 d: (string){ string } 2950 }, (#struct){ 2951 b: (string){ string } 2952 }, (#struct){ 2953 b: (string){ string } 2954 c: (int){ int } 2955 }, (#struct){ 2956 b: (string){ string } 2957 d: (string){ string } 2958 }) } 2959 } 2960 p2: (struct){ 2961 #A: (#struct){ |(*(#struct){ 2962 a: (string){ string } 2963 }, (#struct){ 2964 a: (string){ string } 2965 c: (int){ int } 2966 }, (#struct){ 2967 a: (string){ string } 2968 d: (string){ string } 2969 }) } 2970 #B: (#struct){ |(*(#struct){ 2971 }, (#struct){ 2972 a: (string){ string } 2973 c: (int){ int } 2974 }, (#struct){ 2975 a: (string){ string } 2976 d: (string){ string } 2977 }, (#struct){ 2978 a: (string){ string } 2979 }, (#struct){ 2980 c: (int){ int } 2981 }, (#struct){ 2982 d: (string){ string } 2983 }, (#struct){ 2984 b: (string){ string } 2985 }, (#struct){ 2986 b: (string){ string } 2987 c: (int){ int } 2988 }, (#struct){ 2989 b: (string){ string } 2990 d: (string){ string } 2991 }) } 2992 } 2993 p3: (struct){ 2994 #A: (#struct){ |(*(#struct){ 2995 a: (string){ string } 2996 }, (#struct){ 2997 a: (string){ string } 2998 c: (int){ int } 2999 }, (#struct){ 3000 a: (string){ string } 3001 d: (string){ string } 3002 }) } 3003 #B: (#struct){ |(*(#struct){ 3004 }, (#struct){ 3005 a: (string){ string } 3006 c: (int){ int } 3007 }, (#struct){ 3008 a: (string){ string } 3009 d: (string){ string } 3010 }, (#struct){ 3011 b: (string){ string } 3012 }, (#struct){ 3013 b: (string){ string } 3014 c: (int){ int } 3015 }, (#struct){ 3016 b: (string){ string } 3017 d: (string){ string } 3018 }, (#struct){ 3019 a: (string){ string } 3020 }, (#struct){ 3021 c: (int){ int } 3022 }, (#struct){ 3023 d: (string){ string } 3024 }) } 3025 } 3026 } 3027 } 3028 noChildError: (struct){ 3029 issue1608: (struct){ 3030 myValue: (#struct){ 3031 fieldName: (string){ "some string" } 3032 } 3033 #type: (#struct){ 3034 fieldName: ((string|struct)){ |((string){ string }, (#struct){ 3035 foo: (string){ string } 3036 }, (#struct){ 3037 bar: ((string|struct)){ |((string){ string }, (#struct){ 3038 foo: (string){ string } 3039 }) } 3040 }) } 3041 } 3042 #subtype: ((string|struct)){ |((string){ string }, (#struct){ 3043 foo: (string){ string } 3044 }) } 3045 } 3046 t1: (struct){ 3047 #D: (#struct){ 3048 b: (string){ string } 3049 } 3050 o: (#struct){ 3051 b: (string){ "test" } 3052 } 3053 } 3054 t2: (struct){ 3055 o: (#struct){ 3056 b: (string){ "test" } 3057 } 3058 #D: (#struct){ 3059 b: (string){ string } 3060 } 3061 } 3062 t3: (struct){ 3063 #D: (#struct){ |((#struct){ 3064 a: (null){ null } 3065 }, (#struct){ 3066 b: (string){ string } 3067 }) } 3068 o: (#struct){ 3069 b: (string){ "test" } 3070 } 3071 } 3072 t4: (struct){ 3073 o: (#struct){ 3074 b: (string){ "test" } 3075 } 3076 #D: (#struct){ |((#struct){ 3077 a: (null){ null } 3078 }, (#struct){ 3079 b: (string){ string } 3080 }) } 3081 } 3082 } 3083 issue1924: (struct){ 3084 t1: (struct){ 3085 m: (struct){ 3086 a: (int){ 2 } 3087 } 3088 x: (int){ 2 } 3089 } 3090 t2: (struct){ 3091 m: (struct){ 3092 a: (int){ 2 } 3093 } 3094 x: (int){ 3 } 3095 } 3096 t3: (struct){ 3097 m: (struct){ 3098 a: (int){ 2 } 3099 } 3100 x: (int){ 1 } 3101 } 3102 } 3103 issue1838: (struct){ 3104 t1: (struct){ 3105 p?: (#list){ 3106 } 3107 a: (null){ null } 3108 } 3109 t2: (struct){ 3110 p?: (#list){ 3111 } 3112 a: (null){ null } 3113 } 3114 } 3115 noHang: (struct){ 3116 #T: (list){ 3117 0: (string){ "d" } 3118 } 3119 x: (list){ 3120 0: (string){ "d" } 3121 } 3122 #X: (list){ 3123 0: (string){ "d" } 3124 } 3125 } 3126 issue1940: (struct){ 3127 #T: (#list){ 3128 0: (string){ "d" } 3129 1: (list){ 3130 } 3131 } 3132 #A: (#struct){ 3133 type: (#list){ 3134 0: (string){ "d" } 3135 1: (list){ 3136 } 3137 } 3138 } 3139 #B: (#struct){ 3140 } 3141 #C: (#struct){ 3142 x: (#struct){ 3143 type: (#list){ 3144 0: (string){ "d" } 3145 1: (list){ 3146 } 3147 } 3148 } 3149 } 3150 } 3151 issue1417: (_|_){ 3152 // [eval] 3153 #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) } 3154 ids: (_|_){ 3155 // [eval] 3156 0: (string){ "xyz" } 3157 1: (_|_){ 3158 // [eval] issue1417.ids.1: invalid value "ab" (out of bound !~"^a"): 3159 // ./issue1417.cue:2:7 3160 // ./issue1417.cue:4:11 3161 // ./issue1417.cue:4:26 3162 } 3163 2: (_|_){ 3164 // [eval] issue1417.ids.2: 2 errors in empty disjunction: 3165 // issue1417.ids.2: invalid value "aB" (out of bound !~"^a"): 3166 // ./issue1417.cue:2:7 3167 // ./issue1417.cue:4:11 3168 // ./issue1417.cue:4:32 3169 // issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"): 3170 // ./issue1417.cue:3:16 3171 // ./issue1417.cue:4:11 3172 // ./issue1417.cue:4:32 3173 } 3174 } 3175 } 3176 issue2209: (_|_){ 3177 // [eval] 3178 simplified: (_|_){ 3179 // [eval] 3180 t1: (struct){ 3181 #SpecFoo: (#struct){ 3182 foo: (#struct){ 3183 min: (int){ 1 } 3184 } 3185 } 3186 #SpecBar: (#struct){ 3187 bar: (#struct){ 3188 min: (int){ 1 } 3189 } 3190 } 3191 spec: (#struct){ 3192 bar: (#struct){ 3193 min: (int){ 1 } 3194 } 3195 } 3196 out: (struct){ |((struct){ 3197 X: (#struct){ 3198 bar: (#struct){ 3199 min: (int){ 1 } 3200 } 3201 } 3202 nullFoo: (null){ null } 3203 minFoo: (int){ int } 3204 }, (struct){ 3205 minBar: (int){ int } 3206 X: (#struct){ 3207 bar: (#struct){ 3208 min: (int){ 1 } 3209 } 3210 } 3211 nullFoo: (null){ null } 3212 }, (struct){ 3213 X: (#struct){ 3214 bar: (#struct){ 3215 min: (int){ 1 } 3216 } 3217 } 3218 nullBar: (null){ null } 3219 minFoo: (int){ int } 3220 }, (struct){ 3221 minBar: (int){ int } 3222 X: (#struct){ 3223 bar: (#struct){ 3224 min: (int){ 1 } 3225 } 3226 } 3227 nullBar: (null){ null } 3228 }) } 3229 } 3230 t2: (_|_){ 3231 // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x: 3232 // ./issue2209full.cue:24:17 3233 #SpecFoo: (#struct){ 3234 foo: (#struct){ 3235 } 3236 } 3237 #SpecBar: (#struct){ 3238 bar: (#struct){ 3239 x: (int){ 1 } 3240 } 3241 } 3242 spec: (#struct){ |(*(#struct){ 3243 bar: (struct){ 3244 } 3245 foo: (#struct){ 3246 } 3247 }, (#struct){ 3248 bar: (#struct){ 3249 x: (int){ 1 } 3250 } 3251 }) } 3252 BAZ: (_|_){ 3253 // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x: 3254 // ./issue2209full.cue:24:17 3255 } 3256 b2: (int){ int } 3257 } 3258 t3: (_|_){ 3259 // [eval] issue2209.simplified.t3.BAZ: undefined field: y: 3260 // ./issue2209full.cue:35:9 3261 #A: (#struct){ 3262 v: (int){ 1 } 3263 } 3264 BAZ: (_|_){ 3265 // [eval] issue2209.simplified.t3.BAZ: undefined field: y: 3266 // ./issue2209full.cue:35:9 3267 } 3268 S: (#struct){ |(*(#struct){ 3269 x: (int){ 1 } 3270 v: (int){ 1 } 3271 }, (#struct){ 3272 x: (int){ 1 } 3273 y: (int){ 1 } 3274 }) } 3275 #B: (#struct){ 3276 x: (int){ 1 } 3277 y: (int){ 1 } 3278 } 3279 b2: (int){ int } 3280 } 3281 } 3282 full: (_|_){ 3283 // [eval] 3284 Foo: (#struct){ 3285 spec: (#struct){ 3286 foo: (#struct){ 3287 min: (int){ |(*(int){ 10 }, (int){ int }) } 3288 max: (int){ |(*(int){ 20 }, (int){ int }) } 3289 } 3290 } 3291 resource: (#struct){ 3292 spec: (#struct){ |(*(#struct){ 3293 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3294 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3295 minBar?: (null){ null } 3296 maxBar?: (null){ null } 3297 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3298 fuga?: (null){ null } 3299 }, (#struct){ 3300 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3301 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3302 minBar?: (null){ null } 3303 maxBar?: (null){ null } 3304 hoge?: (null){ null } 3305 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3306 }) } 3307 _X: (#struct){ 3308 spec: (#struct){ |(*(#struct){ 3309 foo: (#struct){ 3310 min: (int){ |(*(int){ 10 }, (int){ int }) } 3311 max: (int){ |(*(int){ 20 }, (int){ int }) } 3312 } 3313 }, (#struct){ 3314 foo: (#struct){ 3315 } 3316 bar: (#struct){ 3317 min: (int){ |(*(int){ 30 }, (int){ int }) } 3318 max: (int){ |(*(int){ 40 }, (int){ int }) } 3319 } 3320 }) } 3321 } 3322 } 3323 } 3324 Bar: (_|_){ 3325 // [eval] 3326 spec: (#struct){ 3327 bar: (#struct){ 3328 min: (int){ |(*(int){ 30 }, (int){ int }) } 3329 max: (int){ |(*(int){ 40 }, (int){ int }) } 3330 } 3331 } 3332 resource: (_|_){ 3333 // [eval] 3334 spec: (_|_){ 3335 // [eval] issue2209.full.Bar.resource.spec: 6 errors in empty disjunction: 3336 // issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 3337 // issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 3338 // ./issue2209full.cue:43:7 3339 // ./issue2209full.cue:48:13 3340 // ./issue2209full.cue:67:10 3341 // ./issue2209full.cue:83:16 3342 // ./issue2209full.cue:87:13 3343 // ./issue2209full.cue:107:20 3344 // issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 3345 // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 3346 // ./issue2209full.cue:43:7 3347 // ./issue2209full.cue:48:13 3348 // ./issue2209full.cue:55:16 3349 // ./issue2209full.cue:71:4 3350 // ./issue2209full.cue:72:13 3351 // ./issue2209full.cue:92:13 3352 // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 3353 // ./issue2209full.cue:43:7 3354 // ./issue2209full.cue:48:13 3355 // ./issue2209full.cue:67:10 3356 // ./issue2209full.cue:83:16 3357 // ./issue2209full.cue:92:13 3358 // ./issue2209full.cue:105:20 3359 // issue2209.full.Bar.resource.spec.minBar: undefined field: min: 3360 // ./issue2209full.cue:77:25 3361 minFoo: (_|_){ 3362 // [eval] issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 3363 // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 3364 // ./issue2209full.cue:43:7 3365 // ./issue2209full.cue:48:13 3366 // ./issue2209full.cue:55:16 3367 // ./issue2209full.cue:71:4 3368 // ./issue2209full.cue:72:13 3369 // ./issue2209full.cue:92:13 3370 // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 3371 // ./issue2209full.cue:43:7 3372 // ./issue2209full.cue:48:13 3373 // ./issue2209full.cue:67:10 3374 // ./issue2209full.cue:83:16 3375 // ./issue2209full.cue:92:13 3376 // ./issue2209full.cue:105:20 3377 } 3378 maxFoo: (_|_){ 3379 // [eval] issue2209.full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction: 3380 // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int): 3381 // ./issue2209full.cue:43:7 3382 // ./issue2209full.cue:48:13 3383 // ./issue2209full.cue:56:16 3384 // ./issue2209full.cue:71:4 3385 // ./issue2209full.cue:73:13 3386 // ./issue2209full.cue:93:13 3387 // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int): 3388 // ./issue2209full.cue:43:7 3389 // ./issue2209full.cue:48:13 3390 // ./issue2209full.cue:67:10 3391 // ./issue2209full.cue:83:16 3392 // ./issue2209full.cue:93:13 3393 // ./issue2209full.cue:106:20 3394 } 3395 minBar: (_|_){ 3396 // [eval] issue2209.full.Bar.resource.spec.minBar: undefined field: min: 3397 // ./issue2209full.cue:77:25 3398 } 3399 maxBar: (_|_){ 3400 // [eval] issue2209.full.Bar.resource.spec.maxBar: undefined field: max: 3401 // ./issue2209full.cue:78:25 3402 } 3403 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3404 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3405 } 3406 _X: (#struct){ 3407 spec: (#struct){ |(*(#struct){ 3408 bar: (#struct){ 3409 } 3410 foo: (#struct){ 3411 min: (int){ |(*(int){ 10 }, (int){ int }) } 3412 max: (int){ |(*(int){ 20 }, (int){ int }) } 3413 } 3414 }, (#struct){ 3415 bar: (#struct){ 3416 min: (int){ |(*(int){ 30 }, (int){ int }) } 3417 max: (int){ |(*(int){ 40 }, (int){ int }) } 3418 } 3419 }) } 3420 } 3421 } 3422 } 3423 #Abstract: (#struct){ 3424 spec: (#struct){ |(*(#struct){ 3425 foo: (#struct){ 3426 min: (int){ |(*(int){ 10 }, (int){ int }) } 3427 max: (int){ |(*(int){ 20 }, (int){ int }) } 3428 } 3429 }, (#struct){ 3430 bar: (#struct){ 3431 min: (int){ |(*(int){ 30 }, (int){ int }) } 3432 max: (int){ |(*(int){ 40 }, (int){ int }) } 3433 } 3434 }) } 3435 resource: (#struct){ 3436 spec: (#struct){ |(*(#struct){ 3437 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3438 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3439 minBar?: (null){ null } 3440 maxBar?: (null){ null } 3441 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3442 fuga?: (null){ null } 3443 }, (#struct){ 3444 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3445 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3446 minBar?: (null){ null } 3447 maxBar?: (null){ null } 3448 hoge?: (null){ null } 3449 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3450 }) } 3451 _X: (#struct){ 3452 spec: (#struct){ |(*(#struct){ 3453 foo: (#struct){ 3454 min: (int){ |(*(int){ 10 }, (int){ int }) } 3455 max: (int){ |(*(int){ 20 }, (int){ int }) } 3456 } 3457 }, (#struct){ 3458 bar: (#struct){ 3459 min: (int){ |(*(int){ 30 }, (int){ int }) } 3460 max: (int){ |(*(int){ 40 }, (int){ int }) } 3461 } 3462 }) } 3463 } 3464 } 3465 } 3466 _#Spec: (#struct){ |(*(#struct){ 3467 foo: (#struct){ 3468 min: (int){ |(*(int){ 10 }, (int){ int }) } 3469 max: (int){ |(*(int){ 20 }, (int){ int }) } 3470 } 3471 }, (#struct){ 3472 bar: (#struct){ 3473 min: (int){ |(*(int){ 30 }, (int){ int }) } 3474 max: (int){ |(*(int){ 40 }, (int){ int }) } 3475 } 3476 }) } 3477 _#SpecFoo: (#struct){ 3478 foo: (#struct){ 3479 min: (int){ |(*(int){ 10 }, (int){ int }) } 3480 max: (int){ |(*(int){ 20 }, (int){ int }) } 3481 } 3482 } 3483 _#SpecBar: (#struct){ 3484 bar: (#struct){ 3485 min: (int){ |(*(int){ 30 }, (int){ int }) } 3486 max: (int){ |(*(int){ 40 }, (int){ int }) } 3487 } 3488 } 3489 _Thing: (#struct){ 3490 spec: (#struct){ |(*(#struct){ 3491 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3492 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3493 minBar?: (null){ null } 3494 maxBar?: (null){ null } 3495 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3496 fuga?: (null){ null } 3497 }, *(#struct){ 3498 minFoo?: (null){ null } 3499 maxFoo?: (null){ null } 3500 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 3501 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 3502 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3503 fuga?: (null){ null } 3504 }, (#struct){ 3505 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3506 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3507 minBar?: (null){ null } 3508 maxBar?: (null){ null } 3509 hoge?: (null){ null } 3510 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3511 }, (#struct){ 3512 minFoo?: (null){ null } 3513 maxFoo?: (null){ null } 3514 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 3515 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 3516 hoge?: (null){ null } 3517 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3518 }) } 3519 _X: (_){ _ } 3520 } 3521 #Constrained: (#struct){ 3522 spec: (#struct){ |(*(#struct){ 3523 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3524 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3525 minBar?: (null){ null } 3526 maxBar?: (null){ null } 3527 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3528 fuga?: (null){ null } 3529 }, *(#struct){ 3530 minFoo?: (null){ null } 3531 maxFoo?: (null){ null } 3532 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 3533 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 3534 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3535 fuga?: (null){ null } 3536 }, (#struct){ 3537 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 3538 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 3539 minBar?: (null){ null } 3540 maxBar?: (null){ null } 3541 hoge?: (null){ null } 3542 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3543 }, (#struct){ 3544 minFoo?: (null){ null } 3545 maxFoo?: (null){ null } 3546 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 3547 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 3548 hoge?: (null){ null } 3549 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3550 }) } 3551 } 3552 #Base: (#struct){ 3553 spec: (#struct){ 3554 minFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 3555 maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 3556 minBar?: ((null|int)){ |((null){ null }, (int){ int }) } 3557 maxBar?: ((null|int)){ |((null){ null }, (int){ int }) } 3558 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3559 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 3560 } 3561 } 3562 } 3563 } 3564 issue2246: (struct){ 3565 simplified: (struct){ 3566 #FormFoo: (#struct){ 3567 fooID: (string){ string } 3568 } 3569 #FormBar: (#struct){ 3570 barID: (string){ string } 3571 } 3572 #Form: (#struct){ |((#struct){ 3573 fooID: (string){ string } 3574 }, (#struct){ 3575 barID: (string){ string } 3576 }) } 3577 data: (struct){ 3578 fooID: (string){ "123" } 3579 } 3580 out1: (#struct){ 3581 fooID: (string){ "123" } 3582 } 3583 out2: (#struct){ 3584 fooID: (string){ "123" } 3585 } 3586 } 3587 full: (struct){ 3588 data: (struct){ 3589 forms: (#list){ 3590 0: (struct){ 3591 fooID: (string){ "00-0000001" } 3592 } 3593 } 3594 } 3595 form1040: (#list){ 3596 0: (int){ 3 } 3597 } 3598 #K1: (#struct){ 3599 #_base: (#struct){ 3600 common: (int){ 3 } 3601 } 3602 #FormFoo: (#struct){ 3603 common: (int){ 3 } 3604 fooID: (string){ string } 3605 } 3606 #FormBar: (#struct){ 3607 common: (int){ 3 } 3608 barID: (string){ string } 3609 } 3610 #Form: (#struct){ |((#struct){ 3611 common: (int){ 3 } 3612 fooID: (string){ string } 3613 }, (#struct){ 3614 common: (int){ 3 } 3615 barID: (string){ string } 3616 }) } 3617 } 3618 #Input: (#struct){ 3619 forms: (list){ 3620 } 3621 } 3622 #summarizeReturn: (#struct){ 3623 in: (#struct){ 3624 forms: (list){ 3625 } 3626 } 3627 out: (#list){ 3628 } 3629 } 3630 #compute: (#struct){ 3631 in: (#struct){ 3632 forms: (list){ 3633 } 3634 } 3635 out: (#list){ 3636 } 3637 } 3638 } 3639 } 3640 issue2263: (struct){ 3641 simplified: (struct){ 3642 metrics: (#struct){ 3643 id: (string){ "foo" } 3644 avg: (int){ 60 } 3645 } 3646 #Metric: (#struct){ |((#struct){ 3647 id: (string){ string } 3648 avg: (number){ number } 3649 }, (#struct){ 3650 id: (string){ string } 3651 }, (#struct){ 3652 avg: (number){ number } 3653 }, (#struct){ 3654 }) } 3655 #IDSource: (#struct){ 3656 id: (string){ string } 3657 } 3658 #TargetAverage: (#struct){ 3659 avg: (number){ number } 3660 } 3661 } 3662 full: (struct){ 3663 metrics: (#list){ 3664 0: (#struct){ 3665 id: (string){ "foo" } 3666 avg: (int){ 60 } 3667 } 3668 1: (#struct){ 3669 id: (string){ "bar" } 3670 value: (int){ 80 } 3671 } 3672 2: (#struct){ 3673 uri: (string){ "baz" } 3674 avg: (int){ 70 } 3675 } 3676 3: (#struct){ 3677 uri: (string){ "qux" } 3678 value: (int){ 90 } 3679 } 3680 } 3681 #Metric: (#struct){ |((#struct){ 3682 id: (string){ string } 3683 avg: (number){ number } 3684 }, (#struct){ 3685 id: (string){ string } 3686 value: (number){ number } 3687 }, (#struct){ 3688 uri: (string){ string } 3689 avg: (number){ number } 3690 }, (#struct){ 3691 uri: (string){ string } 3692 value: (number){ number } 3693 }) } 3694 #Source: (#struct){ |((#struct){ 3695 id: (string){ string } 3696 }, (#struct){ 3697 uri: (string){ string } 3698 }) } 3699 #Target: (#struct){ |((#struct){ 3700 avg: (number){ number } 3701 }, (#struct){ 3702 value: (number){ number } 3703 }) } 3704 #IDSource: (#struct){ 3705 id: (string){ string } 3706 } 3707 #URISource: (#struct){ 3708 uri: (string){ string } 3709 } 3710 #TargetAverage: (#struct){ 3711 avg: (number){ number } 3712 } 3713 #TargetValue: (#struct){ 3714 value: (number){ number } 3715 } 3716 } 3717 } 3718 issue3149: (_|_){ 3719 // [eval] 3720 #valid: (#struct){ 3721 name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) } 3722 } 3723 list: (_|_){ 3724 // [eval] 3725 0: (#struct){ 3726 name: (string){ "FooBarFoo" } 3727 } 3728 1: (#struct){ 3729 name: (string){ "FooBazFoo" } 3730 } 3731 2: (#struct){ 3732 name: (string){ "FooQuuxFoo" } 3733 } 3734 3: (_|_){ 3735 // [eval] 3736 name: (_|_){ 3737 // [eval] issue3149.list.3.name: 2 errors in empty disjunction: 3738 // issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"): 3739 // ./issue3149.cue:3:13 3740 // ./issue3149.cue:3:10 3741 // ./issue3149.cue:10:10 3742 // issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"): 3743 // ./issue3149.cue:3:46 3744 // ./issue3149.cue:3:10 3745 // ./issue3149.cue:10:10 3746 } 3747 } 3748 } 3749 } 3750 issue3528: (struct){ 3751 original: (struct){ 3752 workflows: (#list){ 3753 0: (#struct){ 3754 container: (#struct){ 3755 } 3756 #container: ((string|struct)){ |((string){ string }, (#struct){ 3757 volumes?: (list){ 3758 } 3759 }) } 3760 } 3761 } 3762 test: (#struct){ 3763 container: (#struct){ 3764 } 3765 #container: ((string|struct)){ |((string){ string }, (#struct){ 3766 volumes?: (list){ 3767 } 3768 }) } 3769 } 3770 #Workflow: (#struct){ 3771 container: (#struct){ 3772 } 3773 #container: ((string|struct)){ |((string){ string }, (#struct){ 3774 volumes?: (list){ 3775 } 3776 }) } 3777 } 3778 } 3779 reduced: (struct){ 3780 a: (#struct){ 3781 A: (#struct){ 3782 } 3783 #a: ((int|struct)){ |((int){ 2 }, (#struct){ 3784 v: (int){ 1 } 3785 }) } 3786 } 3787 #A: (#struct){ 3788 A: (#struct){ 3789 } 3790 #a: ((int|struct)){ |((int){ 2 }, (#struct){ 3791 v: (int){ 1 } 3792 }) } 3793 } 3794 } 3795 counter: (struct){ 3796 } 3797 nested: (struct){ 3798 t1: ((int|struct)){ |((struct){ 3799 v: (int){ 1 } 3800 }, (int){ 2 }, (int){ 3 }) } 3801 t2: ((int|struct)){ |((struct){ 3802 v: (int){ 1 } 3803 }, (int){ 2 }) } 3804 } 3805 } 3806 issue3784: (struct){ 3807 reduced: (struct){ 3808 #Schema: (#struct){ 3809 a: (#struct){ |((#struct){ 3810 kind: (string){ "A" } 3811 b: (#struct){ 3812 c?: (string){ string } 3813 } 3814 }, (#struct){ 3815 kind: (string){ "B" } 3816 }) } 3817 } 3818 out: (#struct){ 3819 a: (#struct){ 3820 kind: (string){ "A" } 3821 b: (#struct){ 3822 c: (string){ "x" } 3823 } 3824 } 3825 } 3826 } 3827 full: (struct){ 3828 #Schema: (#struct){ 3829 pages?: (#struct){ |((#struct){ 3830 build_type!: (string){ "legacy" } 3831 source!: (#struct){ 3832 branch!: (string){ string } 3833 path?: (string){ string } 3834 } 3835 cname?: (string){ string } 3836 }, (#struct){ 3837 build_type!: (string){ "workflow" } 3838 source?: (#struct){ 3839 branch?: (string){ string } 3840 path?: (string){ string } 3841 } 3842 cname?: (string){ string } 3843 }) } 3844 } 3845 out: (#struct){ 3846 pages: (#struct){ 3847 build_type: (string){ "legacy" } 3848 source: (#struct){ 3849 branch: (string){ "main" } 3850 path: (string){ "/" } 3851 } 3852 cname: (string){ "foo.com" } 3853 } 3854 } 3855 } 3856 variant1: (struct){ 3857 #Schema: (#struct){ 3858 pages: (#struct){ 3859 build_type!: (string){ "legacy" } 3860 source: (#struct){ 3861 branch!: (string){ string } 3862 path?: (string){ string } 3863 } 3864 cname?: (string){ string } 3865 } 3866 } 3867 } 3868 variant2: (struct){ 3869 #Schema: (#struct){ |((#struct){ 3870 build_type!: (string){ "legacy" } 3871 source!: (#struct){ 3872 branch!: (_){ _ } 3873 } 3874 }, (#struct){ 3875 build_type!: (string){ "workflow" } 3876 cname?: (_){ _ } 3877 }) } 3878 a: (#struct){ 3879 build_type!: (string){ "legacy" } 3880 source: (#struct){ 3881 branch!: (string){ string } 3882 path?: (string){ string } 3883 } 3884 cname?: (string){ string } 3885 } 3886 } 3887 } 3888 issue770: (struct){ 3889 #A: (#struct){ 3890 v: (string){ |((string){ "a" }, (string){ "b" }, (string){ "c" }) } 3891 } 3892 h: (struct){ 3893 a: (#struct){ 3894 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 3895 } 3896 b: (#struct){ 3897 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 3898 } 3899 boo: (#struct){ 3900 v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) } 3901 } 3902 c: (#struct){ 3903 v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) } 3904 } 3905 coo: (#struct){ 3906 v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) } 3907 } 3908 } 3909 } 3910 } 3911 -- out/compile -- 3912 --- in.cue 3913 { 3914 disambiguateClosed: { 3915 b: (〈0;#Def〉 & 〈0;a〉) 3916 a: 〈0;#Def〉 3917 #Def: { 3918 ({ 3919 x: true 3920 }|{ 3921 y: true 3922 }) 3923 } 3924 } 3925 alwaysCheckMatchers1: { 3926 b: ({ 3927 [=~"^xxxx$"]: int 3928 }|null) 3929 b: ({ 3930 c: string 3931 }|null) 3932 b: { 3933 c: "yyyyy" 3934 } 3935 } 3936 alwaysCheckPatterns2: { 3937 a: 〈0;#X〉 3938 a: 〈0;b〉 3939 b: 〈0;#X〉 3940 b: { 3941 c: "yyyyy" 3942 } 3943 #X: (string|{ 3944 c: string 3945 { 3946 [=~"^xxxx$"]: int 3947 } 3948 }) 3949 } 3950 nestedNonMonotonic: { 3951 resolved: { 3952 n1: { 3953 x: ({ 3954 a: 〈import;struct〉.MinFields(2) 3955 }|null) 3956 x: ({ 3957 a: { 3958 c: 1 3959 } 3960 }|null) 3961 x: ({ 3962 a: { 3963 d: 1 3964 } 3965 }|null) 3966 } 3967 } 3968 } 3969 nestedNonMonotonic: { 3970 resolved: { 3971 n2: { 3972 x: ({ 3973 a: { 3974 b: 〈import;struct〉.MinFields(2) 3975 } 3976 }|null) 3977 x: ({ 3978 a: { 3979 b: { 3980 c: 1 3981 } 3982 } 3983 }|null) 3984 x: ({ 3985 a: { 3986 b: { 3987 d: 1 3988 } 3989 } 3990 }|null) 3991 } 3992 } 3993 } 3994 nestedNonMonotonic: { 3995 eliminated: { 3996 n1: { 3997 p1: { 3998 x: ({ 3999 a: 〈import;struct〉.MaxFields(1) 4000 }|null) 4001 x: ({ 4002 a: { 4003 c: 1 4004 } 4005 }|null) 4006 x: ({ 4007 a: { 4008 d: 1 4009 } 4010 }|null) 4011 } 4012 } 4013 } 4014 } 4015 nestedNonMonotonic: { 4016 eliminated: { 4017 n1: { 4018 p2: { 4019 x: ({ 4020 a: { 4021 c: 1 4022 } 4023 }|null) 4024 x: ({ 4025 a: 〈import;struct〉.MaxFields(1) 4026 }|null) 4027 x: ({ 4028 a: { 4029 d: 1 4030 } 4031 }|null) 4032 } 4033 } 4034 } 4035 } 4036 nestedNonMonotonic: { 4037 eliminated: { 4038 n1: { 4039 p2: { 4040 x: ({ 4041 a: { 4042 c: 1 4043 } 4044 }|null) 4045 x: ({ 4046 a: { 4047 d: 1 4048 } 4049 }|null) 4050 x: ({ 4051 a: 〈import;struct〉.MaxFields(1) 4052 }|null) 4053 } 4054 } 4055 } 4056 } 4057 nestedNonMonotonic: { 4058 eliminated: { 4059 n2: { 4060 p1: { 4061 x: ({ 4062 a: { 4063 b: 〈import;struct〉.MaxFields(1) 4064 } 4065 }|null) 4066 x: ({ 4067 a: { 4068 b: { 4069 c: 1 4070 } 4071 } 4072 }|null) 4073 x: ({ 4074 a: { 4075 b: { 4076 d: 1 4077 } 4078 } 4079 }|null) 4080 } 4081 } 4082 } 4083 } 4084 nestedNonMonotonic: { 4085 eliminated: { 4086 n2: { 4087 p2: { 4088 x: ({ 4089 a: { 4090 b: { 4091 c: 1 4092 } 4093 } 4094 }|null) 4095 x: ({ 4096 a: { 4097 b: 〈import;struct〉.MaxFields(1) 4098 } 4099 }|null) 4100 x: ({ 4101 a: { 4102 b: { 4103 d: 1 4104 } 4105 } 4106 }|null) 4107 } 4108 } 4109 } 4110 } 4111 nestedNonMonotonic: { 4112 eliminated: { 4113 n2: { 4114 p2: { 4115 x: ({ 4116 a: { 4117 b: { 4118 c: 1 4119 } 4120 } 4121 }|null) 4122 x: ({ 4123 a: { 4124 b: { 4125 d: 1 4126 } 4127 } 4128 }|null) 4129 x: ({ 4130 a: { 4131 b: 〈import;struct〉.MaxFields(1) 4132 } 4133 }|null) 4134 } 4135 } 4136 } 4137 } 4138 nestedNonMonotonic: { 4139 incomplete: { 4140 a: { 4141 n1: { 4142 p1: { 4143 x: ({ 4144 a: 〈import;struct〉.MinFields(2) 4145 }|null) 4146 x: ({ 4147 a: { 4148 c: 1 4149 } 4150 }|null) 4151 } 4152 } 4153 } 4154 } 4155 } 4156 nestedNonMonotonic: { 4157 incomplete: { 4158 a: { 4159 n1: { 4160 p2: { 4161 x: ({ 4162 a: { 4163 c: 1 4164 } 4165 }|null) 4166 x: ({ 4167 a: 〈import;struct〉.MinFields(2) 4168 }|null) 4169 } 4170 } 4171 } 4172 } 4173 } 4174 nestedNonMonotonic: { 4175 incomplete: { 4176 a: { 4177 n2: { 4178 p1: { 4179 x: ({ 4180 a: { 4181 b: 〈import;struct〉.MinFields(2) 4182 } 4183 }|null) 4184 x: ({ 4185 a: { 4186 b: { 4187 c: 1 4188 } 4189 } 4190 }|null) 4191 } 4192 } 4193 } 4194 } 4195 } 4196 nestedNonMonotonic: { 4197 incomplete: { 4198 a: { 4199 n2: { 4200 p2: { 4201 x: ({ 4202 a: { 4203 b: { 4204 c: 1 4205 } 4206 } 4207 }|null) 4208 x: ({ 4209 a: { 4210 b: 〈import;struct〉.MinFields(2) 4211 } 4212 }|null) 4213 } 4214 } 4215 } 4216 } 4217 } 4218 nestedNonMonotonic: { 4219 incomplete: { 4220 b: { 4221 n1: { 4222 p1: { 4223 x: ({ 4224 a: 〈import;struct〉.MinFields(3) 4225 }|null) 4226 x: ({ 4227 a: { 4228 c: 1 4229 } 4230 }|null) 4231 x: ({ 4232 a: { 4233 d: 1 4234 } 4235 }|null) 4236 } 4237 } 4238 } 4239 } 4240 } 4241 nestedNonMonotonic: { 4242 incomplete: { 4243 b: { 4244 n1: { 4245 p2: { 4246 x: ({ 4247 a: { 4248 c: 1 4249 } 4250 }|null) 4251 x: ({ 4252 a: 〈import;struct〉.MinFields(3) 4253 }|null) 4254 x: ({ 4255 a: { 4256 d: 1 4257 } 4258 }|null) 4259 } 4260 } 4261 } 4262 } 4263 } 4264 nestedNonMonotonic: { 4265 incomplete: { 4266 b: { 4267 n1: { 4268 p3: { 4269 x: ({ 4270 a: { 4271 c: 1 4272 } 4273 }|null) 4274 x: ({ 4275 a: { 4276 d: 1 4277 } 4278 }|null) 4279 x: ({ 4280 a: 〈import;struct〉.MinFields(3) 4281 }|null) 4282 } 4283 } 4284 } 4285 } 4286 } 4287 nestedNonMonotonic: { 4288 incomplete: { 4289 b: { 4290 n2: { 4291 p1: { 4292 x: ({ 4293 a: { 4294 b: 〈import;struct〉.MinFields(3) 4295 } 4296 }|null) 4297 x: ({ 4298 a: { 4299 b: { 4300 c: 1 4301 } 4302 } 4303 }|null) 4304 x: ({ 4305 a: { 4306 b: { 4307 d: 1 4308 } 4309 } 4310 }|null) 4311 } 4312 } 4313 } 4314 } 4315 } 4316 nestedNonMonotonic: { 4317 incomplete: { 4318 b: { 4319 n2: { 4320 p1: { 4321 x: ({ 4322 a: { 4323 b: { 4324 c: 1 4325 } 4326 } 4327 }|null) 4328 x: ({ 4329 a: { 4330 b: 〈import;struct〉.MinFields(3) 4331 } 4332 }|null) 4333 x: ({ 4334 a: { 4335 b: { 4336 d: 1 4337 } 4338 } 4339 }|null) 4340 } 4341 } 4342 } 4343 } 4344 } 4345 nestedNonMonotonic: { 4346 incomplete: { 4347 b: { 4348 n2: { 4349 p1: { 4350 x: ({ 4351 a: { 4352 b: { 4353 c: 1 4354 } 4355 } 4356 }|null) 4357 x: ({ 4358 a: { 4359 b: { 4360 d: 1 4361 } 4362 } 4363 }|null) 4364 x: ({ 4365 a: { 4366 b: 〈import;struct〉.MinFields(3) 4367 } 4368 }|null) 4369 } 4370 } 4371 } 4372 } 4373 } 4374 preserveClosedness: { 4375 small: { 4376 p1: { 4377 #A: (〈0;#B〉 & { 4378 a: string 4379 }) 4380 #B: { 4381 (*{}|{ 4382 a: string 4383 }) 4384 (*{}|{ 4385 b: int 4386 }) 4387 } 4388 } 4389 } 4390 } 4391 preserveClosedness: { 4392 small: { 4393 p2: { 4394 #A: (〈0;#B〉 & { 4395 a: string 4396 }) 4397 #B: { 4398 ({ 4399 a: string 4400 }|*{}) 4401 (*{}|{ 4402 b: int 4403 }) 4404 } 4405 } 4406 } 4407 } 4408 preserveClosedness: { 4409 medium: { 4410 p1: { 4411 #A: (〈0;#B〉 & { 4412 a: string 4413 }) 4414 #B: { 4415 (*{}|{ 4416 a: string 4417 }|{ 4418 b: string 4419 }) 4420 (*{}|{ 4421 c: int 4422 }|{ 4423 d: string 4424 }) 4425 } 4426 } 4427 } 4428 } 4429 preserveClosedness: { 4430 medium: { 4431 p2: { 4432 #A: (〈0;#B〉 & { 4433 a: string 4434 }) 4435 #B: { 4436 ({ 4437 a: string 4438 }|*{}|{ 4439 b: string 4440 }) 4441 (*{}|{ 4442 c: int 4443 }|{ 4444 d: string 4445 }) 4446 } 4447 } 4448 } 4449 } 4450 preserveClosedness: { 4451 medium: { 4452 p3: { 4453 #A: (〈0;#B〉 & { 4454 a: string 4455 }) 4456 #B: { 4457 ({ 4458 a: string 4459 }|{ 4460 b: string 4461 }|*{}) 4462 (*{}|{ 4463 c: int 4464 }|{ 4465 d: string 4466 }) 4467 } 4468 } 4469 } 4470 } 4471 noChildError: _ 4472 noChildError: { 4473 issue1608: { 4474 myValue: (〈0;#type〉 & { 4475 fieldName: "some string" 4476 }) 4477 #type: { 4478 fieldName: 〈1;#subtype〉 4479 } 4480 #subtype: (string|{ 4481 foo: string 4482 }|{ 4483 bar: 〈1;#subtype〉 4484 }) 4485 } 4486 } 4487 noChildError: { 4488 t1: { 4489 #D: ({ 4490 b: string 4491 }|{ 4492 c: 〈1;#D〉 4493 }) 4494 o: (〈0;#D〉 & { 4495 b: "test" 4496 }) 4497 } 4498 } 4499 noChildError: { 4500 t2: { 4501 o: (〈0;#D〉 & { 4502 b: "test" 4503 }) 4504 #D: ({ 4505 b: string 4506 }|{ 4507 c: 〈1;#D〉 4508 }) 4509 } 4510 } 4511 noChildError: { 4512 t3: { 4513 #D: ({ 4514 a: null 4515 }|{ 4516 b: string 4517 }|{ 4518 c: 〈1;#D〉 4519 }) 4520 o: (〈0;#D〉 & { 4521 b: "test" 4522 }) 4523 } 4524 } 4525 noChildError: { 4526 t4: { 4527 o: (〈0;#D〉 & { 4528 b: "test" 4529 }) 4530 #D: ({ 4531 a: null 4532 }|{ 4533 b: string 4534 }|{ 4535 c: 〈1;#D〉 4536 }) 4537 } 4538 } 4539 issue1924: { 4540 t1: { 4541 m: { 4542 a: 2 4543 } 4544 x: (*[ 4545 〈1;m〉.b, 4546 ]|2) 4547 } 4548 } 4549 issue1924: { 4550 t2: { 4551 m: { 4552 a: 2 4553 } 4554 x: (*{ 4555 v: 〈1;m〉.b 4556 }|3) 4557 } 4558 } 4559 issue1924: { 4560 t3: { 4561 m: { 4562 a: 2 4563 } 4564 x: (*〈0;m〉.b|1) 4565 } 4566 } 4567 issue1838: { 4568 t1: { 4569 p?: [] 4570 a: ([ 4571 for _, k in 〈1;p〉 { 4572 〈1;k〉 4573 }, 4574 ]|null) 4575 } 4576 } 4577 issue1838: { 4578 t2: { 4579 p?: [] 4580 a: (null|[ 4581 for _, k in 〈1;p〉 { 4582 〈1;k〉 4583 }, 4584 ]) 4585 } 4586 } 4587 noHang: { 4588 #T: ([ 4589 "a", 4590 〈1;#T〉, 4591 ]|[ 4592 "d", 4593 ...〈1;#T〉, 4594 ]) 4595 x: 〈0;#T〉 4596 #X: 〈0;x〉 4597 #X: 〈0;#T〉 4598 } 4599 issue1940: { 4600 #T: ([ 4601 "a", 4602 〈1;#T〉, 4603 ]|[ 4604 "b", 4605 〈1;#T〉, 4606 ]|[ 4607 "c", 4608 〈1;#T〉, 4609 ]|[ 4610 "d", 4611 [ 4612 ...〈2;#T〉, 4613 ], 4614 ]) 4615 #A: { 4616 type: 〈1;#T〉 4617 } 4618 #B: { 4619 [string]: 〈1;#A〉 4620 } 4621 #C: (〈0;#B〉 & { 4622 x: 〈1;#A〉 4623 }) 4624 } 4625 } 4626 --- issue1417.cue 4627 { 4628 issue1417: { 4629 #ID: (!~"^a"|=~"^ab$"|=~"^aB$") 4630 #ID: (=~"^a"|!~"[A-Z]") 4631 ids: ([ 4632 ...〈1;#ID〉, 4633 ] & [ 4634 "xyz", 4635 "ab", 4636 "aB", 4637 ]) 4638 } 4639 } 4640 --- issue2209full.cue 4641 { 4642 issue2209: { 4643 simplified: { 4644 t1: { 4645 #SpecFoo: { 4646 foo: { 4647 min: 1 4648 } 4649 } 4650 #SpecBar: { 4651 bar: { 4652 min: 1 4653 } 4654 } 4655 spec: { 4656 bar: {} 4657 } 4658 spec: (〈0;#SpecFoo〉|〈0;#SpecBar〉) 4659 out: { 4660 ({ 4661 nullFoo: null 4662 }|{ 4663 nullBar: null 4664 }) 4665 ({ 4666 minFoo: int 4667 }|{ 4668 minBar: int 4669 }) 4670 if (〈0;X〉.bar != _|_(explicit error (_|_ literal) in source)) { 4671 minBar: 〈1;X〉.bar.min 4672 } 4673 X: 〈1;spec〉 4674 } 4675 } 4676 } 4677 } 4678 issue2209: { 4679 simplified: { 4680 t2: { 4681 #SpecFoo: { 4682 foo: {} 4683 } 4684 #SpecBar: { 4685 bar: { 4686 x: 1 4687 } 4688 } 4689 spec: { 4690 bar: {} 4691 } 4692 spec: (*〈0;#SpecFoo〉|〈0;#SpecBar〉) 4693 if (〈0;spec〉.bar != _|_(explicit error (_|_ literal) in source)) { 4694 BAZ: 〈1;spec〉.bar.x 4695 } 4696 ({ 4697 f1: int 4698 }|{ 4699 b2: int 4700 }) 4701 ({ 4702 f2: int 4703 }|{ 4704 b2: int 4705 }) 4706 } 4707 } 4708 } 4709 issue2209: { 4710 simplified: { 4711 t3: { 4712 #A: { 4713 v: 1 4714 } 4715 ({ 4716 f1: int 4717 }|{ 4718 b2: int 4719 }) 4720 ({ 4721 f2: int 4722 }|{ 4723 b2: int 4724 }) 4725 BAZ: 〈0;S〉.y 4726 S: (*〈0;#A〉|〈0;#B〉) 4727 #B: { 4728 x: 1 4729 y: 1 4730 } 4731 S: { 4732 x: 1 4733 } 4734 } 4735 } 4736 } 4737 issue2209: { 4738 full: { 4739 Foo: (〈0;#Abstract〉 & { 4740 spec: { 4741 foo: {} 4742 } 4743 }) 4744 Bar: (〈0;#Abstract〉 & { 4745 spec: { 4746 bar: {} 4747 } 4748 }) 4749 #Abstract: { 4750 spec: 〈1;_#Spec〉 4751 resource: (〈1;_Thing〉 & { 4752 _X: { 4753 spec: 〈3〉.spec 4754 } 4755 }) 4756 } 4757 _#Spec: (*〈0;_#SpecFoo〉|〈0;_#SpecBar〉) 4758 _#SpecFoo: { 4759 foo: { 4760 min: (int|*10) 4761 max: (int|*20) 4762 } 4763 } 4764 _#SpecBar: { 4765 bar: { 4766 min: (int|*30) 4767 max: (int|*40) 4768 } 4769 } 4770 _Thing: (〈0;#Constrained〉 & { 4771 _X: _ 4772 spec: { 4773 if (〈1;_X〉.spec.foo != _|_(explicit error (_|_ literal) in source)) { 4774 minFoo: 〈2;_X〉.spec.foo.min 4775 maxFoo: 〈2;_X〉.spec.foo.max 4776 } 4777 if (〈1;_X〉.spec.bar != _|_(explicit error (_|_ literal) in source)) { 4778 minBar: 〈2;_X〉.spec.bar.min 4779 maxBar: 〈2;_X〉.spec.bar.max 4780 } 4781 } 4782 }) 4783 #Constrained: (〈0;#Base〉 & { 4784 spec: ({ 4785 minFoo: (int|*10) 4786 maxFoo: (int|*20) 4787 minBar?: null 4788 maxBar?: null 4789 }|{ 4790 minBar: (int|*30) 4791 maxBar: (int|*40) 4792 minFoo?: null 4793 maxFoo?: null 4794 }) 4795 spec: (*{ 4796 fuga?: null 4797 }|{ 4798 hoge?: null 4799 }) 4800 }) 4801 #Base: { 4802 spec: { 4803 minFoo?: (null|int) 4804 maxFoo?: (null|int) 4805 minBar?: (null|int) 4806 maxBar?: (null|int) 4807 hoge?: (null|bool) 4808 fuga?: (null|bool) 4809 } 4810 } 4811 } 4812 } 4813 } 4814 --- issue2246.cue 4815 { 4816 issue2246: { 4817 simplified: { 4818 #FormFoo: { 4819 fooID: string 4820 } 4821 #FormBar: { 4822 barID: string 4823 } 4824 #Form: { 4825 (〈1;#FormFoo〉|〈1;#FormBar〉) 4826 } 4827 data: { 4828 fooID: "123" 4829 } 4830 out1: (〈0;#Form〉 & 〈0;data〉) 4831 out2: (〈0;#Form〉 & 〈0;out1〉) 4832 } 4833 } 4834 issue2246: { 4835 full: { 4836 data: { 4837 forms: [ 4838 { 4839 fooID: "00-0000001" 4840 }, 4841 ] 4842 } 4843 form1040: (〈0;#compute〉 & { 4844 in: 〈1;data〉 4845 }).out 4846 #K1: { 4847 #_base: { 4848 common: 3 4849 } 4850 #FormFoo: { 4851 〈1;#_base〉 4852 fooID: string 4853 } 4854 #FormBar: { 4855 〈1;#_base〉 4856 barID: string 4857 } 4858 #Form: { 4859 (〈1;#FormFoo〉|〈1;#FormBar〉) 4860 } 4861 } 4862 #Input: { 4863 forms: [ 4864 ...〈2;#K1〉.#Form, 4865 ] 4866 } 4867 #summarizeReturn: { 4868 in: 〈1;#Input〉 4869 out: [ 4870 for _, k in 〈1;in〉.forms { 4871 〈1;k〉.common 4872 }, 4873 ] 4874 } 4875 #compute: { 4876 in: 〈1;#Input〉 4877 out: (〈1;#summarizeReturn〉 & { 4878 in: 〈1;in〉 4879 }).out 4880 } 4881 } 4882 } 4883 } 4884 --- issue2263.cue 4885 { 4886 issue2263: { 4887 simplified: { 4888 metrics: 〈0;#Metric〉 4889 #Metric: { 4890 (〈1;#IDSource〉|{}) 4891 (〈1;#TargetAverage〉|{}) 4892 } 4893 metrics: { 4894 id: "foo" 4895 avg: 60 4896 } 4897 #IDSource: { 4898 id: string 4899 } 4900 #TargetAverage: { 4901 avg: number 4902 } 4903 } 4904 } 4905 issue2263: { 4906 full: { 4907 metrics: [ 4908 ...〈1;#Metric〉, 4909 ] 4910 metrics: [ 4911 { 4912 id: "foo" 4913 avg: 60 4914 }, 4915 { 4916 id: "bar" 4917 value: 80 4918 }, 4919 { 4920 uri: "baz" 4921 avg: 70 4922 }, 4923 { 4924 uri: "qux" 4925 value: 90 4926 }, 4927 ] 4928 #Metric: { 4929 〈1;#Source〉 4930 〈1;#Target〉 4931 } 4932 #Source: (〈0;#IDSource〉|〈0;#URISource〉) 4933 #Target: (〈0;#TargetAverage〉|〈0;#TargetValue〉) 4934 #IDSource: { 4935 id: string 4936 } 4937 #URISource: { 4938 uri: string 4939 } 4940 #TargetAverage: { 4941 avg: number 4942 } 4943 #TargetValue: { 4944 value: number 4945 } 4946 } 4947 } 4948 } 4949 --- issue3149.cue 4950 { 4951 issue3149: { 4952 #valid: { 4953 name!: ((=~"^Foo"|"an exception") & (=~"Foo$"|"an exception")) 4954 } 4955 list: [ 4956 ...〈1;#valid〉, 4957 ] 4958 list: [ 4959 { 4960 name: "FooBarFoo" 4961 }, 4962 { 4963 name: "FooBazFoo" 4964 }, 4965 { 4966 name: "FooQuuxFoo" 4967 }, 4968 { 4969 name: "an exception" 4970 }, 4971 ] 4972 } 4973 } 4974 --- issue3528.cue 4975 { 4976 issue3528: { 4977 original: { 4978 workflows: [ 4979 ...〈1;#Workflow〉, 4980 ] 4981 workflows: [ 4982 〈1;test〉, 4983 ] 4984 test: (〈0;#Workflow〉 & {}) 4985 #Workflow: { 4986 container: { 4987 [string]: (string|〈1;#container〉) 4988 } 4989 #container: (string|{ 4990 volumes?: [ 4991 ...string, 4992 ] 4993 }) 4994 } 4995 } 4996 } 4997 issue3528: { 4998 reduced: { 4999 a?: 〈0;#A〉 5000 a: (〈0;#A〉 & {}) 5001 #A: { 5002 A: { 5003 [string]: (1|〈1;#a〉) 5004 } 5005 #a: (2|{ 5006 v: 1 5007 }) 5008 } 5009 } 5010 } 5011 issue3528: { 5012 counter: {} 5013 } 5014 issue3528: { 5015 nested: { 5016 t1: { 5017 ({ 5018 v: 1 5019 }|(2|3)) 5020 ({ 5021 v: 1 5022 }|(2|3)) 5023 ({ 5024 v: 1 5025 }|(2|3)) 5026 ({ 5027 v: 1 5028 }|(2|3)) 5029 } 5030 } 5031 } 5032 issue3528: { 5033 nested: { 5034 t2: { 5035 ({ 5036 v: 1 5037 }|2) 5038 ({ 5039 v: 1 5040 }|(2|3)) 5041 ({ 5042 v: 1 5043 }|2) 5044 ({ 5045 v: 1 5046 }|2) 5047 } 5048 } 5049 } 5050 } 5051 --- issue3784.cue 5052 { 5053 issue3784: { 5054 reduced: { 5055 #Schema: { 5056 a: ({ 5057 kind: "A" 5058 b: { 5059 c?: string 5060 } 5061 b: {} 5062 }|{ 5063 kind: "B" 5064 }) 5065 } 5066 out: 〈0;#Schema〉 5067 out: { 5068 a: { 5069 kind: "A" 5070 b: { 5071 c: "x" 5072 } 5073 } 5074 } 5075 } 5076 } 5077 issue3784: { 5078 full: { 5079 #Schema: { 5080 pages?: { 5081 build_type?: ("legacy"|"workflow") 5082 source?: { 5083 branch?: string 5084 path?: string 5085 } 5086 cname?: string 5087 } 5088 pages?: ({ 5089 build_type!: "legacy" 5090 source!: { 5091 branch!: _ 5092 } 5093 }|close({ 5094 build_type!: "workflow" 5095 cname?: _ 5096 })) 5097 } 5098 out: (〈0;#Schema〉 & { 5099 pages: { 5100 cname: "foo.com" 5101 build_type: "legacy" 5102 source: { 5103 branch: "main" 5104 path: "/" 5105 } 5106 } 5107 }) 5108 } 5109 } 5110 issue3784: { 5111 variant1: { 5112 #Schema: { 5113 pages: { 5114 build_type?: ("legacy"|"workflow") 5115 source: { 5116 branch?: string 5117 path?: string 5118 } 5119 cname?: string 5120 } 5121 pages?: ({ 5122 build_type!: "legacy" 5123 source!: { 5124 branch!: _ 5125 } 5126 }|close({ 5127 build_type!: "workflow" 5128 cname?: _ 5129 })) 5130 } 5131 } 5132 } 5133 issue3784: { 5134 variant2: { 5135 #Schema: ({ 5136 build_type!: "legacy" 5137 source!: { 5138 branch!: _ 5139 } 5140 }|close({ 5141 build_type!: "workflow" 5142 cname?: _ 5143 })) 5144 a: 〈0;#Schema〉 5145 a: { 5146 build_type?: ("legacy"|"workflow") 5147 source: { 5148 branch?: string 5149 path?: string 5150 } 5151 cname?: string 5152 } 5153 } 5154 } 5155 } 5156 --- issue770.cue 5157 { 5158 issue770: { 5159 #A: { 5160 v: ("a"|"b"|"c") 5161 } 5162 h: { 5163 [string]: 〈1;#A〉 5164 } 5165 h: { 5166 a: { 5167 v: (*"a"|string) 5168 } 5169 } 5170 h: { 5171 [=~"^b"]: { 5172 v: (*〈2;h〉.a.v|string) 5173 } 5174 } 5175 h: { 5176 [=~"^c"]: { 5177 v: (*〈2;h〉.b.v|string) 5178 } 5179 } 5180 h: { 5181 b: _ 5182 } 5183 h: { 5184 boo: _ 5185 } 5186 h: { 5187 c: _ 5188 } 5189 h: { 5190 coo: _ 5191 } 5192 } 5193 }