cuelang.org/go@v0.13.0/cue/testdata/disjunctions/issue2209.txtar (about) 1 -- input.cue -- 2 full: { 3 Foo: #Abstract & {spec: foo: {}} 4 Bar: #Abstract & {spec: bar: {}} 5 6 #Abstract: X={ 7 spec: _#Spec 8 9 resource: _Thing & {_X: spec: X.spec} 10 } 11 12 _#Spec: *_#SpecFoo | _#SpecBar 13 14 _#SpecFoo: { 15 foo: { 16 min: int | *10 17 max: int | *20 18 } 19 } 20 21 _#SpecBar: { 22 bar: { 23 min: int | *30 24 max: int | *40 25 } 26 } 27 28 _Thing: #Constrained & { 29 _X: _ 30 31 spec: { 32 if _X.spec.foo != _|_ { 33 minFoo: _X.spec.foo.min 34 maxFoo: _X.spec.foo.max 35 } 36 37 if _X.spec.bar != _|_ { 38 minBar: _X.spec.bar.min 39 maxBar: _X.spec.bar.max 40 } 41 } 42 } 43 44 #Constrained: #Base & { 45 spec: { 46 minFoo: int | *10 47 maxFoo: int | *20 48 minBar?: null 49 maxBar?: null 50 } | { 51 minBar: int | *30 52 maxBar: int | *40 53 minFoo?: null 54 maxFoo?: null 55 } 56 57 spec: *{ 58 fuga?: null 59 } | { 60 hoge?: null 61 } 62 } 63 64 #Base: { 65 spec: { 66 minFoo?: null | int 67 maxFoo?: null | int 68 minBar?: null | int 69 maxBar?: null | int 70 71 hoge?: null | bool 72 fuga?: null | bool 73 } 74 } 75 } 76 77 reduced: { 78 Foo: #Obj & {spec: foo: {}} 79 Bar: #Obj & {spec: bar: {}} 80 81 #Obj: X={ 82 spec: *#SpecFoo | #SpecBar 83 84 out: #Out & { 85 _Xspec: X.spec 86 if _Xspec.foo != _|_ { 87 minFoo: _Xspec.foo.min 88 } 89 if _Xspec.bar != _|_ { 90 minBar: _Xspec.bar.min 91 } 92 } 93 } 94 95 #SpecFoo: foo: min: int | *10 96 #SpecBar: bar: min: int | *20 97 98 #Out: { 99 {minFoo: int} | {minBar: int} 100 101 *{nullFoo: null} | {nullBar: null} 102 } 103 } 104 -- out/compile -- 105 --- input.cue 106 { 107 full: { 108 Foo: (〈0;#Abstract〉 & { 109 spec: { 110 foo: {} 111 } 112 }) 113 Bar: (〈0;#Abstract〉 & { 114 spec: { 115 bar: {} 116 } 117 }) 118 #Abstract: { 119 spec: 〈1;_#Spec〉 120 resource: (〈1;_Thing〉 & { 121 _X: { 122 spec: 〈3〉.spec 123 } 124 }) 125 } 126 _#Spec: (*〈0;_#SpecFoo〉|〈0;_#SpecBar〉) 127 _#SpecFoo: { 128 foo: { 129 min: (int|*10) 130 max: (int|*20) 131 } 132 } 133 _#SpecBar: { 134 bar: { 135 min: (int|*30) 136 max: (int|*40) 137 } 138 } 139 _Thing: (〈0;#Constrained〉 & { 140 _X: _ 141 spec: { 142 if (〈1;_X〉.spec.foo != _|_(explicit error (_|_ literal) in source)) { 143 minFoo: 〈2;_X〉.spec.foo.min 144 maxFoo: 〈2;_X〉.spec.foo.max 145 } 146 if (〈1;_X〉.spec.bar != _|_(explicit error (_|_ literal) in source)) { 147 minBar: 〈2;_X〉.spec.bar.min 148 maxBar: 〈2;_X〉.spec.bar.max 149 } 150 } 151 }) 152 #Constrained: (〈0;#Base〉 & { 153 spec: ({ 154 minFoo: (int|*10) 155 maxFoo: (int|*20) 156 minBar?: null 157 maxBar?: null 158 }|{ 159 minBar: (int|*30) 160 maxBar: (int|*40) 161 minFoo?: null 162 maxFoo?: null 163 }) 164 spec: (*{ 165 fuga?: null 166 }|{ 167 hoge?: null 168 }) 169 }) 170 #Base: { 171 spec: { 172 minFoo?: (null|int) 173 maxFoo?: (null|int) 174 minBar?: (null|int) 175 maxBar?: (null|int) 176 hoge?: (null|bool) 177 fuga?: (null|bool) 178 } 179 } 180 } 181 reduced: { 182 Foo: (〈0;#Obj〉 & { 183 spec: { 184 foo: {} 185 } 186 }) 187 Bar: (〈0;#Obj〉 & { 188 spec: { 189 bar: {} 190 } 191 }) 192 #Obj: { 193 spec: (*〈1;#SpecFoo〉|〈1;#SpecBar〉) 194 out: (〈1;#Out〉 & { 195 _Xspec: 〈2〉.spec 196 if (〈0;_Xspec〉.foo != _|_(explicit error (_|_ literal) in source)) { 197 minFoo: 〈1;_Xspec〉.foo.min 198 } 199 if (〈0;_Xspec〉.bar != _|_(explicit error (_|_ literal) in source)) { 200 minBar: 〈1;_Xspec〉.bar.min 201 } 202 }) 203 } 204 #SpecFoo: { 205 foo: { 206 min: (int|*10) 207 } 208 } 209 #SpecBar: { 210 bar: { 211 min: (int|*20) 212 } 213 } 214 #Out: { 215 ({ 216 minFoo: int 217 }|{ 218 minBar: int 219 }) 220 (*{ 221 nullFoo: null 222 }|{ 223 nullBar: null 224 }) 225 } 226 } 227 } 228 -- out/eval/stats -- 229 Leaks: 0 230 Freed: 1141 231 Reused: 1122 232 Allocs: 19 233 Retain: 51 234 235 Unifications: 375 236 Conjuncts: 1463 237 Disjuncts: 1192 238 -- out/evalalpha -- 239 (struct){ 240 full: (struct){ 241 Foo: (#struct){ 242 spec: (#struct){ 243 foo: (#struct){ 244 min: (int){ |(*(int){ 10 }, (int){ int }) } 245 max: (int){ |(*(int){ 20 }, (int){ int }) } 246 } 247 } 248 resource: (#struct){ 249 _X: (#struct){ 250 spec: ~(full.Foo.spec) 251 } 252 spec: (#struct){ |(*(#struct){ 253 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 254 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 255 minBar?: (null){ null } 256 maxBar?: (null){ null } 257 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 258 fuga?: (null){ null } 259 }, (#struct){ 260 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 261 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 262 minBar?: (null){ null } 263 maxBar?: (null){ null } 264 hoge?: (null){ null } 265 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 266 }) } 267 } 268 } 269 Bar: (#struct){ 270 spec: (#struct){ 271 bar: (#struct){ 272 min: (int){ |(*(int){ 30 }, (int){ int }) } 273 max: (int){ |(*(int){ 40 }, (int){ int }) } 274 } 275 } 276 resource: (#struct){ 277 _X: (#struct){ 278 spec: ~(full.Bar.spec) 279 } 280 spec: (#struct){ |(*(#struct){ 281 minFoo?: (null){ null } 282 maxFoo?: (null){ null } 283 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 284 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 285 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 286 fuga?: (null){ null } 287 }, (#struct){ 288 minFoo?: (null){ null } 289 maxFoo?: (null){ null } 290 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 291 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 292 hoge?: (null){ null } 293 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 294 }) } 295 } 296 } 297 #Abstract: (#struct){ 298 spec: (#struct){ |(*(#struct){ 299 foo: (#struct){ 300 min: (int){ |(*(int){ 10 }, (int){ int }) } 301 max: (int){ |(*(int){ 20 }, (int){ int }) } 302 } 303 }, (#struct){ 304 bar: (#struct){ 305 min: (int){ |(*(int){ 30 }, (int){ int }) } 306 max: (int){ |(*(int){ 40 }, (int){ int }) } 307 } 308 }) } 309 resource: (#struct){ 310 _X: (#struct){ 311 spec: (#struct){ |(*(#struct){ 312 foo: (#struct){ 313 min: (int){ |(*(int){ 10 }, (int){ int }) } 314 max: (int){ |(*(int){ 20 }, (int){ int }) } 315 } 316 }, (#struct){ 317 bar: (#struct){ 318 min: (int){ |(*(int){ 30 }, (int){ int }) } 319 max: (int){ |(*(int){ 40 }, (int){ int }) } 320 } 321 }) } 322 } 323 spec: (#struct){ |(*(#struct){ 324 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 325 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 326 minBar?: (null){ null } 327 maxBar?: (null){ null } 328 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 329 fuga?: (null){ null } 330 }, (#struct){ 331 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 332 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 333 minBar?: (null){ null } 334 maxBar?: (null){ null } 335 hoge?: (null){ null } 336 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 337 }) } 338 } 339 } 340 _#Spec: (#struct){ |(*(#struct){ 341 foo: (#struct){ 342 min: (int){ |(*(int){ 10 }, (int){ int }) } 343 max: (int){ |(*(int){ 20 }, (int){ int }) } 344 } 345 }, (#struct){ 346 bar: (#struct){ 347 min: (int){ |(*(int){ 30 }, (int){ int }) } 348 max: (int){ |(*(int){ 40 }, (int){ int }) } 349 } 350 }) } 351 _#SpecFoo: (#struct){ 352 foo: (#struct){ 353 min: (int){ |(*(int){ 10 }, (int){ int }) } 354 max: (int){ |(*(int){ 20 }, (int){ int }) } 355 } 356 } 357 _#SpecBar: (#struct){ 358 bar: (#struct){ 359 min: (int){ |(*(int){ 30 }, (int){ int }) } 360 max: (int){ |(*(int){ 40 }, (int){ int }) } 361 } 362 } 363 _Thing: (#struct){ 364 _X: (_){ _ } 365 spec: (#struct){ |(*(#struct){ 366 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 367 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 368 minBar?: (null){ null } 369 maxBar?: (null){ null } 370 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 371 fuga?: (null){ null } 372 }, *(#struct){ 373 minFoo?: (null){ null } 374 maxFoo?: (null){ null } 375 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 376 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 377 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 378 fuga?: (null){ null } 379 }, (#struct){ 380 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 381 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 382 minBar?: (null){ null } 383 maxBar?: (null){ null } 384 hoge?: (null){ null } 385 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 386 }, (#struct){ 387 minFoo?: (null){ null } 388 maxFoo?: (null){ null } 389 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 390 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 391 hoge?: (null){ null } 392 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 393 }) } 394 } 395 #Constrained: (#struct){ 396 spec: (#struct){ |(*(#struct){ 397 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 398 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 399 minBar?: (null){ null } 400 maxBar?: (null){ null } 401 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 402 fuga?: (null){ null } 403 }, *(#struct){ 404 minFoo?: (null){ null } 405 maxFoo?: (null){ null } 406 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 407 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 408 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 409 fuga?: (null){ null } 410 }, (#struct){ 411 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 412 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 413 minBar?: (null){ null } 414 maxBar?: (null){ null } 415 hoge?: (null){ null } 416 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 417 }, (#struct){ 418 minFoo?: (null){ null } 419 maxFoo?: (null){ null } 420 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 421 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 422 hoge?: (null){ null } 423 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 424 }) } 425 } 426 #Base: (#struct){ 427 spec: (#struct){ 428 minFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 429 maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 430 minBar?: ((null|int)){ |((null){ null }, (int){ int }) } 431 maxBar?: ((null|int)){ |((null){ null }, (int){ int }) } 432 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 433 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 434 } 435 } 436 } 437 reduced: (struct){ 438 Foo: (#struct){ 439 spec: (#struct){ 440 foo: (#struct){ 441 min: (int){ |(*(int){ 10 }, (int){ int }) } 442 } 443 } 444 out: (#struct){ |(*(#struct){ 445 _Xspec: ~(reduced.Foo.spec) 446 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 447 nullFoo: (null){ null } 448 }, (#struct){ 449 _Xspec: ~(reduced.Foo.spec) 450 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 451 nullBar: (null){ null } 452 }) } 453 } 454 Bar: (#struct){ 455 spec: (#struct){ 456 bar: (#struct){ 457 min: (int){ |(*(int){ 20 }, (int){ int }) } 458 } 459 } 460 out: (#struct){ |(*(#struct){ 461 _Xspec: ~(reduced.Bar.spec) 462 minBar: (int){ |(*(int){ 20 }, (int){ int }) } 463 nullFoo: (null){ null } 464 }, (#struct){ 465 _Xspec: ~(reduced.Bar.spec) 466 minBar: (int){ |(*(int){ 20 }, (int){ int }) } 467 nullBar: (null){ null } 468 }) } 469 } 470 #Obj: (#struct){ 471 spec: (#struct){ |(*(#struct){ 472 foo: (#struct){ 473 min: (int){ |(*(int){ 10 }, (int){ int }) } 474 } 475 }, (#struct){ 476 bar: (#struct){ 477 min: (int){ |(*(int){ 20 }, (int){ int }) } 478 } 479 }) } 480 out: (#struct){ |(*(#struct){ 481 _Xspec: (#struct){ |(*(#struct){ 482 foo: (#struct){ 483 min: (int){ |(*(int){ 10 }, (int){ int }) } 484 } 485 }, (#struct){ 486 bar: (#struct){ 487 min: (int){ |(*(int){ 20 }, (int){ int }) } 488 } 489 }) } 490 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 491 nullFoo: (null){ null } 492 }, (#struct){ 493 _Xspec: (#struct){ |(*(#struct){ 494 foo: (#struct){ 495 min: (int){ |(*(int){ 10 }, (int){ int }) } 496 } 497 }, (#struct){ 498 bar: (#struct){ 499 min: (int){ |(*(int){ 20 }, (int){ int }) } 500 } 501 }) } 502 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 503 nullBar: (null){ null } 504 }) } 505 } 506 #SpecFoo: (#struct){ 507 foo: (#struct){ 508 min: (int){ |(*(int){ 10 }, (int){ int }) } 509 } 510 } 511 #SpecBar: (#struct){ 512 bar: (#struct){ 513 min: (int){ |(*(int){ 20 }, (int){ int }) } 514 } 515 } 516 #Out: (#struct){ |(*(#struct){ 517 minFoo: (int){ int } 518 nullFoo: (null){ null } 519 }, *(#struct){ 520 minBar: (int){ int } 521 nullFoo: (null){ null } 522 }, (#struct){ 523 minFoo: (int){ int } 524 nullBar: (null){ null } 525 }, (#struct){ 526 minBar: (int){ int } 527 nullBar: (null){ null } 528 }) } 529 } 530 } 531 -- diff/-out/evalalpha<==>+out/eval -- 532 diff old new 533 --- old 534 +++ new 535 @@ -1,175 +1,59 @@ 536 -Errors: 537 -full.Bar.resource.spec: 6 errors in empty disjunction: 538 -full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 539 -full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 540 - ./input.cue:3:7 541 - ./input.cue:8:13 542 - ./input.cue:27:10 543 - ./input.cue:43:16 544 - ./input.cue:47:13 545 - ./input.cue:67:20 546 -full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 547 -full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 548 - ./input.cue:3:7 549 - ./input.cue:8:13 550 - ./input.cue:15:16 551 - ./input.cue:31:4 552 - ./input.cue:32:13 553 - ./input.cue:52:13 554 -full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 555 - ./input.cue:3:7 556 - ./input.cue:8:13 557 - ./input.cue:27:10 558 - ./input.cue:43:16 559 - ./input.cue:52:13 560 - ./input.cue:65:20 561 -full.Bar.resource.spec.minBar: undefined field: min: 562 - ./input.cue:37:25 563 -reduced.Bar.out.minBar: undefined field: min: 564 - ./input.cue:89:24 565 - 566 -Result: 567 -(_|_){ 568 - // [eval] 569 - full: (_|_){ 570 - // [eval] 571 - Foo: (#struct){ 572 - spec: (#struct){ 573 - foo: (#struct){ 574 - min: (int){ |(*(int){ 10 }, (int){ int }) } 575 - max: (int){ |(*(int){ 20 }, (int){ int }) } 576 - } 577 - } 578 - resource: (#struct){ 579 - spec: (#struct){ |(*(#struct){ 580 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 581 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 582 - minBar?: (null){ null } 583 - maxBar?: (null){ null } 584 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 585 - fuga?: (null){ null } 586 - }, (#struct){ 587 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 588 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 589 - minBar?: (null){ null } 590 - maxBar?: (null){ null } 591 - hoge?: (null){ null } 592 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 593 - }) } 594 - _X: (#struct){ 595 - spec: (#struct){ |(*(#struct){ 596 - foo: (#struct){ 597 - min: (int){ |(*(int){ 10 }, (int){ int }) } 598 - max: (int){ |(*(int){ 20 }, (int){ int }) } 599 - } 600 - }, (#struct){ 601 - foo: (#struct){ 602 - } 603 - bar: (#struct){ 604 - min: (int){ |(*(int){ 30 }, (int){ int }) } 605 - max: (int){ |(*(int){ 40 }, (int){ int }) } 606 - } 607 - }) } 608 - } 609 - } 610 - } 611 - Bar: (_|_){ 612 - // [eval] 613 - spec: (#struct){ 614 - bar: (#struct){ 615 - min: (int){ |(*(int){ 30 }, (int){ int }) } 616 - max: (int){ |(*(int){ 40 }, (int){ int }) } 617 - } 618 - } 619 - resource: (_|_){ 620 - // [eval] 621 - spec: (_|_){ 622 - // [eval] full.Bar.resource.spec: 6 errors in empty disjunction: 623 - // full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 624 - // full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 625 - // ./input.cue:3:7 626 - // ./input.cue:8:13 627 - // ./input.cue:27:10 628 - // ./input.cue:43:16 629 - // ./input.cue:47:13 630 - // ./input.cue:67:20 631 - // full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 632 - // full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 633 - // ./input.cue:3:7 634 - // ./input.cue:8:13 635 - // ./input.cue:15:16 636 - // ./input.cue:31:4 637 - // ./input.cue:32:13 638 - // ./input.cue:52:13 639 - // full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 640 - // ./input.cue:3:7 641 - // ./input.cue:8:13 642 - // ./input.cue:27:10 643 - // ./input.cue:43:16 644 - // ./input.cue:52:13 645 - // ./input.cue:65:20 646 - // full.Bar.resource.spec.minBar: undefined field: min: 647 - // ./input.cue:37:25 648 - minFoo: (_|_){ 649 - // [eval] full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 650 - // full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 651 - // ./input.cue:3:7 652 - // ./input.cue:8:13 653 - // ./input.cue:15:16 654 - // ./input.cue:31:4 655 - // ./input.cue:32:13 656 - // ./input.cue:52:13 657 - // full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 658 - // ./input.cue:3:7 659 - // ./input.cue:8:13 660 - // ./input.cue:27:10 661 - // ./input.cue:43:16 662 - // ./input.cue:52:13 663 - // ./input.cue:65:20 664 - } 665 - maxFoo: (_|_){ 666 - // [eval] full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction: 667 - // full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int): 668 - // ./input.cue:3:7 669 - // ./input.cue:8:13 670 - // ./input.cue:16:16 671 - // ./input.cue:31:4 672 - // ./input.cue:33:13 673 - // ./input.cue:53:13 674 - // full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int): 675 - // ./input.cue:3:7 676 - // ./input.cue:8:13 677 - // ./input.cue:27:10 678 - // ./input.cue:43:16 679 - // ./input.cue:53:13 680 - // ./input.cue:66:20 681 - } 682 - minBar: (_|_){ 683 - // [eval] full.Bar.resource.spec.minBar: undefined field: min: 684 - // ./input.cue:37:25 685 - } 686 - maxBar: (_|_){ 687 - // [eval] full.Bar.resource.spec.maxBar: undefined field: max: 688 - // ./input.cue:38:25 689 - } 690 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 691 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 692 - } 693 - _X: (#struct){ 694 - spec: (#struct){ |(*(#struct){ 695 - bar: (#struct){ 696 - } 697 - foo: (#struct){ 698 - min: (int){ |(*(int){ 10 }, (int){ int }) } 699 - max: (int){ |(*(int){ 20 }, (int){ int }) } 700 - } 701 - }, (#struct){ 702 - bar: (#struct){ 703 - min: (int){ |(*(int){ 30 }, (int){ int }) } 704 - max: (int){ |(*(int){ 40 }, (int){ int }) } 705 - } 706 - }) } 707 - } 708 +(struct){ 709 + full: (struct){ 710 + Foo: (#struct){ 711 + spec: (#struct){ 712 + foo: (#struct){ 713 + min: (int){ |(*(int){ 10 }, (int){ int }) } 714 + max: (int){ |(*(int){ 20 }, (int){ int }) } 715 + } 716 + } 717 + resource: (#struct){ 718 + _X: (#struct){ 719 + spec: ~(full.Foo.spec) 720 + } 721 + spec: (#struct){ |(*(#struct){ 722 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 723 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 724 + minBar?: (null){ null } 725 + maxBar?: (null){ null } 726 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 727 + fuga?: (null){ null } 728 + }, (#struct){ 729 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 730 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 731 + minBar?: (null){ null } 732 + maxBar?: (null){ null } 733 + hoge?: (null){ null } 734 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 735 + }) } 736 + } 737 + } 738 + Bar: (#struct){ 739 + spec: (#struct){ 740 + bar: (#struct){ 741 + min: (int){ |(*(int){ 30 }, (int){ int }) } 742 + max: (int){ |(*(int){ 40 }, (int){ int }) } 743 + } 744 + } 745 + resource: (#struct){ 746 + _X: (#struct){ 747 + spec: ~(full.Bar.spec) 748 + } 749 + spec: (#struct){ |(*(#struct){ 750 + minFoo?: (null){ null } 751 + maxFoo?: (null){ null } 752 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 753 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 754 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 755 + fuga?: (null){ null } 756 + }, (#struct){ 757 + minFoo?: (null){ null } 758 + maxFoo?: (null){ null } 759 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 760 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 761 + hoge?: (null){ null } 762 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 763 + }) } 764 } 765 } 766 #Abstract: (#struct){ 767 @@ -185,34 +69,34 @@ 768 } 769 }) } 770 resource: (#struct){ 771 - spec: (#struct){ |(*(#struct){ 772 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 773 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 774 - minBar?: (null){ null } 775 - maxBar?: (null){ null } 776 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 777 - fuga?: (null){ null } 778 - }, (#struct){ 779 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 780 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 781 - minBar?: (null){ null } 782 - maxBar?: (null){ null } 783 - hoge?: (null){ null } 784 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 785 - }) } 786 - _X: (#struct){ 787 - spec: (#struct){ |(*(#struct){ 788 - foo: (#struct){ 789 - min: (int){ |(*(int){ 10 }, (int){ int }) } 790 - max: (int){ |(*(int){ 20 }, (int){ int }) } 791 - } 792 - }, (#struct){ 793 - bar: (#struct){ 794 - min: (int){ |(*(int){ 30 }, (int){ int }) } 795 - max: (int){ |(*(int){ 40 }, (int){ int }) } 796 - } 797 - }) } 798 - } 799 + _X: (#struct){ 800 + spec: (#struct){ |(*(#struct){ 801 + foo: (#struct){ 802 + min: (int){ |(*(int){ 10 }, (int){ int }) } 803 + max: (int){ |(*(int){ 20 }, (int){ int }) } 804 + } 805 + }, (#struct){ 806 + bar: (#struct){ 807 + min: (int){ |(*(int){ 30 }, (int){ int }) } 808 + max: (int){ |(*(int){ 40 }, (int){ int }) } 809 + } 810 + }) } 811 + } 812 + spec: (#struct){ |(*(#struct){ 813 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 814 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 815 + minBar?: (null){ null } 816 + maxBar?: (null){ null } 817 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 818 + fuga?: (null){ null } 819 + }, (#struct){ 820 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 821 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 822 + minBar?: (null){ null } 823 + maxBar?: (null){ null } 824 + hoge?: (null){ null } 825 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 826 + }) } 827 } 828 } 829 _#Spec: (#struct){ |(*(#struct){ 830 @@ -239,36 +123,36 @@ 831 } 832 } 833 _Thing: (#struct){ 834 - spec: (#struct){ |(*(#struct){ 835 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 836 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 837 - minBar?: (null){ null } 838 - maxBar?: (null){ null } 839 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 840 - fuga?: (null){ null } 841 - }, *(#struct){ 842 - minFoo?: (null){ null } 843 - maxFoo?: (null){ null } 844 - minBar: (int){ |(*(int){ 30 }, (int){ int }) } 845 - maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 846 - hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 847 - fuga?: (null){ null } 848 - }, (#struct){ 849 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 850 - maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 851 - minBar?: (null){ null } 852 - maxBar?: (null){ null } 853 - hoge?: (null){ null } 854 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 855 - }, (#struct){ 856 - minFoo?: (null){ null } 857 - maxFoo?: (null){ null } 858 - minBar: (int){ |(*(int){ 30 }, (int){ int }) } 859 - maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 860 - hoge?: (null){ null } 861 - fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 862 - }) } 863 _X: (_){ _ } 864 + spec: (#struct){ |(*(#struct){ 865 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 866 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 867 + minBar?: (null){ null } 868 + maxBar?: (null){ null } 869 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 870 + fuga?: (null){ null } 871 + }, *(#struct){ 872 + minFoo?: (null){ null } 873 + maxFoo?: (null){ null } 874 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 875 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 876 + hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 877 + fuga?: (null){ null } 878 + }, (#struct){ 879 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 880 + maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 881 + minBar?: (null){ null } 882 + maxBar?: (null){ null } 883 + hoge?: (null){ null } 884 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 885 + }, (#struct){ 886 + minFoo?: (null){ null } 887 + maxFoo?: (null){ null } 888 + minBar: (int){ |(*(int){ 30 }, (int){ int }) } 889 + maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 890 + hoge?: (null){ null } 891 + fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 892 + }) } 893 } 894 #Constrained: (#struct){ 895 spec: (#struct){ |(*(#struct){ 896 @@ -312,59 +196,38 @@ 897 } 898 } 899 } 900 - reduced: (_|_){ 901 - // [eval] 902 - Foo: (#struct){ 903 - spec: (#struct){ 904 - foo: (#struct){ 905 - min: (int){ |(*(int){ 10 }, (int){ int }) } 906 - } 907 - } 908 - out: (#struct){ |(*(#struct){ 909 - _Xspec: (#struct){ 910 - foo: (#struct){ 911 - min: (int){ |(*(int){ 10 }, (int){ int }) } 912 - } 913 - } 914 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 915 - nullFoo: (null){ null } 916 - }, (#struct){ 917 - _Xspec: (#struct){ 918 - foo: (#struct){ 919 - min: (int){ |(*(int){ 10 }, (int){ int }) } 920 - } 921 - } 922 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 923 - nullBar: (null){ null } 924 - }) } 925 - } 926 - Bar: (_|_){ 927 - // [eval] 928 + reduced: (struct){ 929 + Foo: (#struct){ 930 + spec: (#struct){ 931 + foo: (#struct){ 932 + min: (int){ |(*(int){ 10 }, (int){ int }) } 933 + } 934 + } 935 + out: (#struct){ |(*(#struct){ 936 + _Xspec: ~(reduced.Foo.spec) 937 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 938 + nullFoo: (null){ null } 939 + }, (#struct){ 940 + _Xspec: ~(reduced.Foo.spec) 941 + minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 942 + nullBar: (null){ null } 943 + }) } 944 + } 945 + Bar: (#struct){ 946 spec: (#struct){ 947 bar: (#struct){ 948 min: (int){ |(*(int){ 20 }, (int){ int }) } 949 } 950 } 951 - out: (_|_){ 952 - // [eval] reduced.Bar.out.minBar: undefined field: min: 953 - // ./input.cue:89:24 954 - _Xspec: (#struct){ |(*(#struct){ 955 - bar: (#struct){ 956 - } 957 - foo: (#struct){ 958 - min: (int){ |(*(int){ 10 }, (int){ int }) } 959 - } 960 - }, (#struct){ 961 - bar: (#struct){ 962 - min: (int){ |(*(int){ 20 }, (int){ int }) } 963 - } 964 - }) } 965 - minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 966 - minBar: (_|_){ 967 - // [eval] reduced.Bar.out.minBar: undefined field: min: 968 - // ./input.cue:89:24 969 - } 970 - } 971 + out: (#struct){ |(*(#struct){ 972 + _Xspec: ~(reduced.Bar.spec) 973 + minBar: (int){ |(*(int){ 20 }, (int){ int }) } 974 + nullFoo: (null){ null } 975 + }, (#struct){ 976 + _Xspec: ~(reduced.Bar.spec) 977 + minBar: (int){ |(*(int){ 20 }, (int){ int }) } 978 + nullBar: (null){ null } 979 + }) } 980 } 981 #Obj: (#struct){ 982 spec: (#struct){ |(*(#struct){ 983 -- out/eval -- 984 Errors: 985 full.Bar.resource.spec: 6 errors in empty disjunction: 986 full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 987 full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 988 ./input.cue:3:7 989 ./input.cue:8:13 990 ./input.cue:27:10 991 ./input.cue:43:16 992 ./input.cue:47:13 993 ./input.cue:67:20 994 full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 995 full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 996 ./input.cue:3:7 997 ./input.cue:8:13 998 ./input.cue:15:16 999 ./input.cue:31:4 1000 ./input.cue:32:13 1001 ./input.cue:52:13 1002 full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 1003 ./input.cue:3:7 1004 ./input.cue:8:13 1005 ./input.cue:27:10 1006 ./input.cue:43:16 1007 ./input.cue:52:13 1008 ./input.cue:65:20 1009 full.Bar.resource.spec.minBar: undefined field: min: 1010 ./input.cue:37:25 1011 reduced.Bar.out.minBar: undefined field: min: 1012 ./input.cue:89:24 1013 1014 Result: 1015 (_|_){ 1016 // [eval] 1017 full: (_|_){ 1018 // [eval] 1019 Foo: (#struct){ 1020 spec: (#struct){ 1021 foo: (#struct){ 1022 min: (int){ |(*(int){ 10 }, (int){ int }) } 1023 max: (int){ |(*(int){ 20 }, (int){ int }) } 1024 } 1025 } 1026 resource: (#struct){ 1027 spec: (#struct){ |(*(#struct){ 1028 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1029 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1030 minBar?: (null){ null } 1031 maxBar?: (null){ null } 1032 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1033 fuga?: (null){ null } 1034 }, (#struct){ 1035 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1036 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1037 minBar?: (null){ null } 1038 maxBar?: (null){ null } 1039 hoge?: (null){ null } 1040 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1041 }) } 1042 _X: (#struct){ 1043 spec: (#struct){ |(*(#struct){ 1044 foo: (#struct){ 1045 min: (int){ |(*(int){ 10 }, (int){ int }) } 1046 max: (int){ |(*(int){ 20 }, (int){ int }) } 1047 } 1048 }, (#struct){ 1049 foo: (#struct){ 1050 } 1051 bar: (#struct){ 1052 min: (int){ |(*(int){ 30 }, (int){ int }) } 1053 max: (int){ |(*(int){ 40 }, (int){ int }) } 1054 } 1055 }) } 1056 } 1057 } 1058 } 1059 Bar: (_|_){ 1060 // [eval] 1061 spec: (#struct){ 1062 bar: (#struct){ 1063 min: (int){ |(*(int){ 30 }, (int){ int }) } 1064 max: (int){ |(*(int){ 40 }, (int){ int }) } 1065 } 1066 } 1067 resource: (_|_){ 1068 // [eval] 1069 spec: (_|_){ 1070 // [eval] full.Bar.resource.spec: 6 errors in empty disjunction: 1071 // full.Bar.resource.spec.minBar: 2 errors in empty disjunction: 1072 // full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int): 1073 // ./input.cue:3:7 1074 // ./input.cue:8:13 1075 // ./input.cue:27:10 1076 // ./input.cue:43:16 1077 // ./input.cue:47:13 1078 // ./input.cue:67:20 1079 // full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 1080 // full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 1081 // ./input.cue:3:7 1082 // ./input.cue:8:13 1083 // ./input.cue:15:16 1084 // ./input.cue:31:4 1085 // ./input.cue:32:13 1086 // ./input.cue:52:13 1087 // full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 1088 // ./input.cue:3:7 1089 // ./input.cue:8:13 1090 // ./input.cue:27:10 1091 // ./input.cue:43:16 1092 // ./input.cue:52:13 1093 // ./input.cue:65:20 1094 // full.Bar.resource.spec.minBar: undefined field: min: 1095 // ./input.cue:37:25 1096 minFoo: (_|_){ 1097 // [eval] full.Bar.resource.spec.minFoo: 2 errors in empty disjunction: 1098 // full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int): 1099 // ./input.cue:3:7 1100 // ./input.cue:8:13 1101 // ./input.cue:15:16 1102 // ./input.cue:31:4 1103 // ./input.cue:32:13 1104 // ./input.cue:52:13 1105 // full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int): 1106 // ./input.cue:3:7 1107 // ./input.cue:8:13 1108 // ./input.cue:27:10 1109 // ./input.cue:43:16 1110 // ./input.cue:52:13 1111 // ./input.cue:65:20 1112 } 1113 maxFoo: (_|_){ 1114 // [eval] full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction: 1115 // full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int): 1116 // ./input.cue:3:7 1117 // ./input.cue:8:13 1118 // ./input.cue:16:16 1119 // ./input.cue:31:4 1120 // ./input.cue:33:13 1121 // ./input.cue:53:13 1122 // full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int): 1123 // ./input.cue:3:7 1124 // ./input.cue:8:13 1125 // ./input.cue:27:10 1126 // ./input.cue:43:16 1127 // ./input.cue:53:13 1128 // ./input.cue:66:20 1129 } 1130 minBar: (_|_){ 1131 // [eval] full.Bar.resource.spec.minBar: undefined field: min: 1132 // ./input.cue:37:25 1133 } 1134 maxBar: (_|_){ 1135 // [eval] full.Bar.resource.spec.maxBar: undefined field: max: 1136 // ./input.cue:38:25 1137 } 1138 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1139 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1140 } 1141 _X: (#struct){ 1142 spec: (#struct){ |(*(#struct){ 1143 bar: (#struct){ 1144 } 1145 foo: (#struct){ 1146 min: (int){ |(*(int){ 10 }, (int){ int }) } 1147 max: (int){ |(*(int){ 20 }, (int){ int }) } 1148 } 1149 }, (#struct){ 1150 bar: (#struct){ 1151 min: (int){ |(*(int){ 30 }, (int){ int }) } 1152 max: (int){ |(*(int){ 40 }, (int){ int }) } 1153 } 1154 }) } 1155 } 1156 } 1157 } 1158 #Abstract: (#struct){ 1159 spec: (#struct){ |(*(#struct){ 1160 foo: (#struct){ 1161 min: (int){ |(*(int){ 10 }, (int){ int }) } 1162 max: (int){ |(*(int){ 20 }, (int){ int }) } 1163 } 1164 }, (#struct){ 1165 bar: (#struct){ 1166 min: (int){ |(*(int){ 30 }, (int){ int }) } 1167 max: (int){ |(*(int){ 40 }, (int){ int }) } 1168 } 1169 }) } 1170 resource: (#struct){ 1171 spec: (#struct){ |(*(#struct){ 1172 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1173 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1174 minBar?: (null){ null } 1175 maxBar?: (null){ null } 1176 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1177 fuga?: (null){ null } 1178 }, (#struct){ 1179 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1180 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1181 minBar?: (null){ null } 1182 maxBar?: (null){ null } 1183 hoge?: (null){ null } 1184 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1185 }) } 1186 _X: (#struct){ 1187 spec: (#struct){ |(*(#struct){ 1188 foo: (#struct){ 1189 min: (int){ |(*(int){ 10 }, (int){ int }) } 1190 max: (int){ |(*(int){ 20 }, (int){ int }) } 1191 } 1192 }, (#struct){ 1193 bar: (#struct){ 1194 min: (int){ |(*(int){ 30 }, (int){ int }) } 1195 max: (int){ |(*(int){ 40 }, (int){ int }) } 1196 } 1197 }) } 1198 } 1199 } 1200 } 1201 _#Spec: (#struct){ |(*(#struct){ 1202 foo: (#struct){ 1203 min: (int){ |(*(int){ 10 }, (int){ int }) } 1204 max: (int){ |(*(int){ 20 }, (int){ int }) } 1205 } 1206 }, (#struct){ 1207 bar: (#struct){ 1208 min: (int){ |(*(int){ 30 }, (int){ int }) } 1209 max: (int){ |(*(int){ 40 }, (int){ int }) } 1210 } 1211 }) } 1212 _#SpecFoo: (#struct){ 1213 foo: (#struct){ 1214 min: (int){ |(*(int){ 10 }, (int){ int }) } 1215 max: (int){ |(*(int){ 20 }, (int){ int }) } 1216 } 1217 } 1218 _#SpecBar: (#struct){ 1219 bar: (#struct){ 1220 min: (int){ |(*(int){ 30 }, (int){ int }) } 1221 max: (int){ |(*(int){ 40 }, (int){ int }) } 1222 } 1223 } 1224 _Thing: (#struct){ 1225 spec: (#struct){ |(*(#struct){ 1226 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1227 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1228 minBar?: (null){ null } 1229 maxBar?: (null){ null } 1230 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1231 fuga?: (null){ null } 1232 }, *(#struct){ 1233 minFoo?: (null){ null } 1234 maxFoo?: (null){ null } 1235 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1236 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1237 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1238 fuga?: (null){ null } 1239 }, (#struct){ 1240 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1241 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1242 minBar?: (null){ null } 1243 maxBar?: (null){ null } 1244 hoge?: (null){ null } 1245 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1246 }, (#struct){ 1247 minFoo?: (null){ null } 1248 maxFoo?: (null){ null } 1249 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1250 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1251 hoge?: (null){ null } 1252 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1253 }) } 1254 _X: (_){ _ } 1255 } 1256 #Constrained: (#struct){ 1257 spec: (#struct){ |(*(#struct){ 1258 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1259 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1260 minBar?: (null){ null } 1261 maxBar?: (null){ null } 1262 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1263 fuga?: (null){ null } 1264 }, *(#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: (int){ |(*(int){ 10 }, (int){ int }) } 1273 maxFoo: (int){ |(*(int){ 20 }, (int){ int }) } 1274 minBar?: (null){ null } 1275 maxBar?: (null){ null } 1276 hoge?: (null){ null } 1277 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1278 }, (#struct){ 1279 minFoo?: (null){ null } 1280 maxFoo?: (null){ null } 1281 minBar: (int){ |(*(int){ 30 }, (int){ int }) } 1282 maxBar: (int){ |(*(int){ 40 }, (int){ int }) } 1283 hoge?: (null){ null } 1284 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1285 }) } 1286 } 1287 #Base: (#struct){ 1288 spec: (#struct){ 1289 minFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 1290 maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) } 1291 minBar?: ((null|int)){ |((null){ null }, (int){ int }) } 1292 maxBar?: ((null|int)){ |((null){ null }, (int){ int }) } 1293 hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1294 fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) } 1295 } 1296 } 1297 } 1298 reduced: (_|_){ 1299 // [eval] 1300 Foo: (#struct){ 1301 spec: (#struct){ 1302 foo: (#struct){ 1303 min: (int){ |(*(int){ 10 }, (int){ int }) } 1304 } 1305 } 1306 out: (#struct){ |(*(#struct){ 1307 _Xspec: (#struct){ 1308 foo: (#struct){ 1309 min: (int){ |(*(int){ 10 }, (int){ int }) } 1310 } 1311 } 1312 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1313 nullFoo: (null){ null } 1314 }, (#struct){ 1315 _Xspec: (#struct){ 1316 foo: (#struct){ 1317 min: (int){ |(*(int){ 10 }, (int){ int }) } 1318 } 1319 } 1320 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1321 nullBar: (null){ null } 1322 }) } 1323 } 1324 Bar: (_|_){ 1325 // [eval] 1326 spec: (#struct){ 1327 bar: (#struct){ 1328 min: (int){ |(*(int){ 20 }, (int){ int }) } 1329 } 1330 } 1331 out: (_|_){ 1332 // [eval] reduced.Bar.out.minBar: undefined field: min: 1333 // ./input.cue:89:24 1334 _Xspec: (#struct){ |(*(#struct){ 1335 bar: (#struct){ 1336 } 1337 foo: (#struct){ 1338 min: (int){ |(*(int){ 10 }, (int){ int }) } 1339 } 1340 }, (#struct){ 1341 bar: (#struct){ 1342 min: (int){ |(*(int){ 20 }, (int){ int }) } 1343 } 1344 }) } 1345 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1346 minBar: (_|_){ 1347 // [eval] reduced.Bar.out.minBar: undefined field: min: 1348 // ./input.cue:89:24 1349 } 1350 } 1351 } 1352 #Obj: (#struct){ 1353 spec: (#struct){ |(*(#struct){ 1354 foo: (#struct){ 1355 min: (int){ |(*(int){ 10 }, (int){ int }) } 1356 } 1357 }, (#struct){ 1358 bar: (#struct){ 1359 min: (int){ |(*(int){ 20 }, (int){ int }) } 1360 } 1361 }) } 1362 out: (#struct){ |(*(#struct){ 1363 _Xspec: (#struct){ |(*(#struct){ 1364 foo: (#struct){ 1365 min: (int){ |(*(int){ 10 }, (int){ int }) } 1366 } 1367 }, (#struct){ 1368 bar: (#struct){ 1369 min: (int){ |(*(int){ 20 }, (int){ int }) } 1370 } 1371 }) } 1372 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1373 nullFoo: (null){ null } 1374 }, (#struct){ 1375 _Xspec: (#struct){ |(*(#struct){ 1376 foo: (#struct){ 1377 min: (int){ |(*(int){ 10 }, (int){ int }) } 1378 } 1379 }, (#struct){ 1380 bar: (#struct){ 1381 min: (int){ |(*(int){ 20 }, (int){ int }) } 1382 } 1383 }) } 1384 minFoo: (int){ |(*(int){ 10 }, (int){ int }) } 1385 nullBar: (null){ null } 1386 }) } 1387 } 1388 #SpecFoo: (#struct){ 1389 foo: (#struct){ 1390 min: (int){ |(*(int){ 10 }, (int){ int }) } 1391 } 1392 } 1393 #SpecBar: (#struct){ 1394 bar: (#struct){ 1395 min: (int){ |(*(int){ 20 }, (int){ int }) } 1396 } 1397 } 1398 #Out: (#struct){ |(*(#struct){ 1399 minFoo: (int){ int } 1400 nullFoo: (null){ null } 1401 }, *(#struct){ 1402 minBar: (int){ int } 1403 nullFoo: (null){ null } 1404 }, (#struct){ 1405 minFoo: (int){ int } 1406 nullBar: (null){ null } 1407 }, (#struct){ 1408 minBar: (int){ int } 1409 nullBar: (null){ null } 1410 }) } 1411 } 1412 }