cuelang.org/go@v0.10.1/cue/testdata/eval/bulk.txtar (about) 1 -- in.cue -- 2 a: { 3 foo: a: 1 4 [X = =~"foo"]: { 5 b: 1 6 name: X 7 } 8 } 9 d: a & { 10 "foobar": { 11 c: 2 12 } 13 } 14 15 t1: { 16 #a: { 17 [>"e" & <"z"]: int 18 } 19 b: #a & {f: 4} 20 c: #a & {z: 4} 21 } 22 23 t2: { 24 #a: { 25 ["x" | "y"]: int 26 } 27 b: #a & {x: 4} 28 c: #a & {z: 4} 29 } 30 31 -- issue2109.cue -- 32 // Detect cycle: 33 // The pattern constraint of FlagsURLS is applied to countries (because 34 // FlagsURLs is embedded. But the pattern constraint itself refers to 35 // countries. So countries -> or(countries) -> countries. 36 // 37 // Theoretically, or(countries) can be resolved without a cycle. And then we 38 // could see it does not apply to countries. For now we stick with this 39 // approach understanding that it is easier to relax later. 40 patternCycle: issue2109: p1: { 41 countries: ["US", "GB", "AU"] 42 FlagsURLs: {[or(countries)]: string} 43 FlagsURLs 44 } 45 patternCycle: issue2109: p2: { 46 FlagsURLs: {[or(countries)]: string} 47 FlagsURLs 48 countries: ["US", "GB", "AU"] 49 } 50 patternCycle: issue2109: p3: { 51 FlagsURLs 52 FlagsURLs: {[or(countries)]: string} 53 countries: ["US", "GB", "AU"] 54 } 55 56 patternCycle: t1: p1: { 57 countries: "US" | "GB" | "AU" 58 FlagsURLs: {[countries]: string} 59 FlagsURLs 60 } 61 patternCycle: t1: p2: { 62 FlagsURLs 63 countries: "US" | "GB" | "AU" 64 FlagsURLs: {[countries]: string} 65 } 66 patternCycle: t1: p3: { 67 FlagsURLs 68 FlagsURLs: {[countries]: string} 69 countries: "US" | "GB" | "AU" 70 } 71 72 -- out/eval/stats -- 73 Leaks: 4 74 Freed: 80 75 Reused: 73 76 Allocs: 11 77 Retain: 12 78 79 Unifications: 63 80 Conjuncts: 126 81 Disjuncts: 90 82 -- out/evalalpha -- 83 Errors: 84 t1.c.z: field not allowed: 85 ./in.cue:16:18 86 ./in.cue:19:11 87 t2.c.z: field not allowed: 88 ./in.cue:24:16 89 ./in.cue:27:11 90 91 Result: 92 (_|_){ 93 // [eval] 94 a: (struct){ 95 foo: (struct){ 96 a: (int){ 1 } 97 b: (int){ 1 } 98 name: (string){ "foo" } 99 } 100 } 101 d: (struct){ 102 foobar: (struct){ 103 c: (int){ 2 } 104 b: (int){ 1 } 105 name: (string){ "foobar" } 106 } 107 foo: (struct){ 108 a: (int){ 1 } 109 b: (int){ 1 } 110 name: (string){ "foo" } 111 } 112 } 113 t1: (_|_){ 114 // [eval] 115 #a: (#struct){ 116 } 117 b: (#struct){ 118 f: (int){ 4 } 119 } 120 c: (_|_){ 121 // [eval] 122 z: (_|_){ 123 // [eval] t1.c.z: field not allowed: 124 // ./in.cue:16:18 125 // ./in.cue:19:11 126 } 127 } 128 } 129 t2: (_|_){ 130 // [eval] 131 #a: (#struct){ 132 } 133 b: (#struct){ 134 x: (int){ 4 } 135 } 136 c: (_|_){ 137 // [eval] 138 z: (_|_){ 139 // [eval] t2.c.z: field not allowed: 140 // ./in.cue:24:16 141 // ./in.cue:27:11 142 } 143 } 144 } 145 patternCycle: (struct){ 146 issue2109: (struct){ 147 p1: (struct){ 148 countries: (#list){ 149 0: (string){ "US" } 150 1: (string){ "GB" } 151 2: (string){ "AU" } 152 } 153 FlagsURLs: (struct){ 154 } 155 } 156 p2: (struct){ 157 FlagsURLs: (struct){ 158 } 159 countries: (#list){ 160 0: (string){ "US" } 161 1: (string){ "GB" } 162 2: (string){ "AU" } 163 } 164 } 165 p3: (struct){ 166 FlagsURLs: (struct){ 167 } 168 countries: (#list){ 169 0: (string){ "US" } 170 1: (string){ "GB" } 171 2: (string){ "AU" } 172 } 173 } 174 } 175 t1: (struct){ 176 p1: (struct){ 177 countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 178 FlagsURLs: (struct){ 179 } 180 } 181 p2: (struct){ 182 countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 183 FlagsURLs: (struct){ 184 } 185 } 186 p3: (struct){ 187 FlagsURLs: (struct){ 188 } 189 countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 190 } 191 } 192 } 193 } 194 -- diff/-out/evalalpha<==>+out/eval -- 195 diff old new 196 --- old 197 +++ new 198 @@ -1,30 +1,10 @@ 199 Errors: 200 t1.c.z: field not allowed: 201 - ./in.cue:15:6 202 - ./in.cue:19:5 203 + ./in.cue:16:18 204 ./in.cue:19:11 205 t2.c.z: field not allowed: 206 - ./in.cue:23:6 207 - ./in.cue:27:5 208 + ./in.cue:24:16 209 ./in.cue:27:11 210 -patternCycle.issue2109.p1.countries: cyclic pattern constraint: 211 - ./issue2109.cue:11:15 212 - ./issue2109.cue:10:13 213 -patternCycle.issue2109.p2.countries: cyclic pattern constraint: 214 - ./issue2109.cue:15:15 215 - ./issue2109.cue:17:13 216 -patternCycle.issue2109.p3.countries: cyclic pattern constraint: 217 - ./issue2109.cue:21:15 218 - ./issue2109.cue:22:13 219 -patternCycle.t1.p1.countries: cyclic pattern constraint: 220 - ./issue2109.cue:27:15 221 - ./issue2109.cue:26:13 222 -patternCycle.t1.p2.countries: cyclic pattern constraint: 223 - ./issue2109.cue:33:15 224 - ./issue2109.cue:32:13 225 -patternCycle.t1.p3.countries: cyclic pattern constraint: 226 - ./issue2109.cue:37:15 227 - ./issue2109.cue:38:13 228 229 Result: 230 (_|_){ 231 @@ -37,16 +17,16 @@ 232 } 233 } 234 d: (struct){ 235 - foo: (struct){ 236 - a: (int){ 1 } 237 - b: (int){ 1 } 238 - name: (string){ "foo" } 239 - } 240 foobar: (struct){ 241 c: (int){ 2 } 242 b: (int){ 1 } 243 name: (string){ "foobar" } 244 } 245 + foo: (struct){ 246 + a: (int){ 1 } 247 + b: (int){ 1 } 248 + name: (string){ "foo" } 249 + } 250 } 251 t1: (_|_){ 252 // [eval] 253 @@ -59,8 +39,7 @@ 254 // [eval] 255 z: (_|_){ 256 // [eval] t1.c.z: field not allowed: 257 - // ./in.cue:15:6 258 - // ./in.cue:19:5 259 + // ./in.cue:16:18 260 // ./in.cue:19:11 261 } 262 } 263 @@ -76,93 +55,56 @@ 264 // [eval] 265 z: (_|_){ 266 // [eval] t2.c.z: field not allowed: 267 - // ./in.cue:23:6 268 - // ./in.cue:27:5 269 + // ./in.cue:24:16 270 // ./in.cue:27:11 271 } 272 } 273 } 274 - patternCycle: (_|_){ 275 - // [eval] 276 - issue2109: (_|_){ 277 - // [eval] 278 - p1: (_|_){ 279 - // [eval] 280 - countries: (_|_){ 281 - // [eval] patternCycle.issue2109.p1.countries: cyclic pattern constraint: 282 - // ./issue2109.cue:11:15 283 - // ./issue2109.cue:10:13 284 - 0: (string){ "US" } 285 - 1: (string){ "GB" } 286 - 2: (string){ "AU" } 287 - } 288 - FlagsURLs: (struct){ 289 - } 290 - } 291 - p2: (_|_){ 292 - // [eval] 293 - FlagsURLs: (struct){ 294 - } 295 - countries: (_|_){ 296 - // [eval] patternCycle.issue2109.p2.countries: cyclic pattern constraint: 297 - // ./issue2109.cue:15:15 298 - // ./issue2109.cue:17:13 299 - 0: (_|_){// "US" 300 - } 301 - 1: (_|_){// "GB" 302 - } 303 - 2: (_|_){// "AU" 304 - } 305 - } 306 - } 307 - p3: (_|_){ 308 - // [eval] 309 - FlagsURLs: (struct){ 310 - } 311 - countries: (_|_){ 312 - // [eval] patternCycle.issue2109.p3.countries: cyclic pattern constraint: 313 - // ./issue2109.cue:21:15 314 - // ./issue2109.cue:22:13 315 - 0: (_|_){// "US" 316 - } 317 - 1: (_|_){// "GB" 318 - } 319 - 2: (_|_){// "AU" 320 - } 321 - } 322 - } 323 - } 324 - t1: (_|_){ 325 - // [eval] 326 - p1: (_|_){ 327 - // [eval] 328 - countries: (_|_){ 329 - // [eval] patternCycle.t1.p1.countries: cyclic pattern constraint: 330 - // ./issue2109.cue:27:15 331 - // ./issue2109.cue:26:13 332 - } 333 - FlagsURLs: (struct){ 334 - } 335 - } 336 - p2: (_|_){ 337 - // [eval] 338 - countries: (_|_){ 339 - // [eval] patternCycle.t1.p2.countries: cyclic pattern constraint: 340 - // ./issue2109.cue:33:15 341 - // ./issue2109.cue:32:13 342 - } 343 - FlagsURLs: (struct){ 344 - } 345 - } 346 - p3: (_|_){ 347 - // [eval] 348 - FlagsURLs: (struct){ 349 - } 350 - countries: (_|_){ 351 - // [eval] patternCycle.t1.p3.countries: cyclic pattern constraint: 352 - // ./issue2109.cue:37:15 353 - // ./issue2109.cue:38:13 354 - } 355 + patternCycle: (struct){ 356 + issue2109: (struct){ 357 + p1: (struct){ 358 + countries: (#list){ 359 + 0: (string){ "US" } 360 + 1: (string){ "GB" } 361 + 2: (string){ "AU" } 362 + } 363 + FlagsURLs: (struct){ 364 + } 365 + } 366 + p2: (struct){ 367 + FlagsURLs: (struct){ 368 + } 369 + countries: (#list){ 370 + 0: (string){ "US" } 371 + 1: (string){ "GB" } 372 + 2: (string){ "AU" } 373 + } 374 + } 375 + p3: (struct){ 376 + FlagsURLs: (struct){ 377 + } 378 + countries: (#list){ 379 + 0: (string){ "US" } 380 + 1: (string){ "GB" } 381 + 2: (string){ "AU" } 382 + } 383 + } 384 + } 385 + t1: (struct){ 386 + p1: (struct){ 387 + countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 388 + FlagsURLs: (struct){ 389 + } 390 + } 391 + p2: (struct){ 392 + countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 393 + FlagsURLs: (struct){ 394 + } 395 + } 396 + p3: (struct){ 397 + FlagsURLs: (struct){ 398 + } 399 + countries: (string){ |((string){ "US" }, (string){ "GB" }, (string){ "AU" }) } 400 } 401 } 402 } 403 -- diff/todo/p3 -- 404 Reordering of error messages. 405 -- diff/explanation -- 406 Overall, the previous errors now passing is acceptable and consistent with 407 the behavior of the new evaluator. 408 -- out/eval -- 409 Errors: 410 t1.c.z: field not allowed: 411 ./in.cue:15:6 412 ./in.cue:19:5 413 ./in.cue:19:11 414 t2.c.z: field not allowed: 415 ./in.cue:23:6 416 ./in.cue:27:5 417 ./in.cue:27:11 418 patternCycle.issue2109.p1.countries: cyclic pattern constraint: 419 ./issue2109.cue:11:15 420 ./issue2109.cue:10:13 421 patternCycle.issue2109.p2.countries: cyclic pattern constraint: 422 ./issue2109.cue:15:15 423 ./issue2109.cue:17:13 424 patternCycle.issue2109.p3.countries: cyclic pattern constraint: 425 ./issue2109.cue:21:15 426 ./issue2109.cue:22:13 427 patternCycle.t1.p1.countries: cyclic pattern constraint: 428 ./issue2109.cue:27:15 429 ./issue2109.cue:26:13 430 patternCycle.t1.p2.countries: cyclic pattern constraint: 431 ./issue2109.cue:33:15 432 ./issue2109.cue:32:13 433 patternCycle.t1.p3.countries: cyclic pattern constraint: 434 ./issue2109.cue:37:15 435 ./issue2109.cue:38:13 436 437 Result: 438 (_|_){ 439 // [eval] 440 a: (struct){ 441 foo: (struct){ 442 a: (int){ 1 } 443 b: (int){ 1 } 444 name: (string){ "foo" } 445 } 446 } 447 d: (struct){ 448 foo: (struct){ 449 a: (int){ 1 } 450 b: (int){ 1 } 451 name: (string){ "foo" } 452 } 453 foobar: (struct){ 454 c: (int){ 2 } 455 b: (int){ 1 } 456 name: (string){ "foobar" } 457 } 458 } 459 t1: (_|_){ 460 // [eval] 461 #a: (#struct){ 462 } 463 b: (#struct){ 464 f: (int){ 4 } 465 } 466 c: (_|_){ 467 // [eval] 468 z: (_|_){ 469 // [eval] t1.c.z: field not allowed: 470 // ./in.cue:15:6 471 // ./in.cue:19:5 472 // ./in.cue:19:11 473 } 474 } 475 } 476 t2: (_|_){ 477 // [eval] 478 #a: (#struct){ 479 } 480 b: (#struct){ 481 x: (int){ 4 } 482 } 483 c: (_|_){ 484 // [eval] 485 z: (_|_){ 486 // [eval] t2.c.z: field not allowed: 487 // ./in.cue:23:6 488 // ./in.cue:27:5 489 // ./in.cue:27:11 490 } 491 } 492 } 493 patternCycle: (_|_){ 494 // [eval] 495 issue2109: (_|_){ 496 // [eval] 497 p1: (_|_){ 498 // [eval] 499 countries: (_|_){ 500 // [eval] patternCycle.issue2109.p1.countries: cyclic pattern constraint: 501 // ./issue2109.cue:11:15 502 // ./issue2109.cue:10:13 503 0: (string){ "US" } 504 1: (string){ "GB" } 505 2: (string){ "AU" } 506 } 507 FlagsURLs: (struct){ 508 } 509 } 510 p2: (_|_){ 511 // [eval] 512 FlagsURLs: (struct){ 513 } 514 countries: (_|_){ 515 // [eval] patternCycle.issue2109.p2.countries: cyclic pattern constraint: 516 // ./issue2109.cue:15:15 517 // ./issue2109.cue:17:13 518 0: (_|_){// "US" 519 } 520 1: (_|_){// "GB" 521 } 522 2: (_|_){// "AU" 523 } 524 } 525 } 526 p3: (_|_){ 527 // [eval] 528 FlagsURLs: (struct){ 529 } 530 countries: (_|_){ 531 // [eval] patternCycle.issue2109.p3.countries: cyclic pattern constraint: 532 // ./issue2109.cue:21:15 533 // ./issue2109.cue:22:13 534 0: (_|_){// "US" 535 } 536 1: (_|_){// "GB" 537 } 538 2: (_|_){// "AU" 539 } 540 } 541 } 542 } 543 t1: (_|_){ 544 // [eval] 545 p1: (_|_){ 546 // [eval] 547 countries: (_|_){ 548 // [eval] patternCycle.t1.p1.countries: cyclic pattern constraint: 549 // ./issue2109.cue:27:15 550 // ./issue2109.cue:26:13 551 } 552 FlagsURLs: (struct){ 553 } 554 } 555 p2: (_|_){ 556 // [eval] 557 countries: (_|_){ 558 // [eval] patternCycle.t1.p2.countries: cyclic pattern constraint: 559 // ./issue2109.cue:33:15 560 // ./issue2109.cue:32:13 561 } 562 FlagsURLs: (struct){ 563 } 564 } 565 p3: (_|_){ 566 // [eval] 567 FlagsURLs: (struct){ 568 } 569 countries: (_|_){ 570 // [eval] patternCycle.t1.p3.countries: cyclic pattern constraint: 571 // ./issue2109.cue:37:15 572 // ./issue2109.cue:38:13 573 } 574 } 575 } 576 } 577 } 578 -- out/compile -- 579 --- in.cue 580 { 581 a: { 582 foo: { 583 a: 1 584 } 585 [=~"foo"]: { 586 b: 1 587 name: 〈1;-〉 588 } 589 } 590 d: (〈0;a〉 & { 591 foobar: { 592 c: 2 593 } 594 }) 595 t1: { 596 #a: { 597 [(>"e" & <"z")]: int 598 } 599 b: (〈0;#a〉 & { 600 f: 4 601 }) 602 c: (〈0;#a〉 & { 603 z: 4 604 }) 605 } 606 t2: { 607 #a: { 608 [("x"|"y")]: int 609 } 610 b: (〈0;#a〉 & { 611 x: 4 612 }) 613 c: (〈0;#a〉 & { 614 z: 4 615 }) 616 } 617 } 618 --- issue2109.cue 619 { 620 patternCycle: { 621 issue2109: { 622 p1: { 623 countries: [ 624 "US", 625 "GB", 626 "AU", 627 ] 628 FlagsURLs: { 629 [or(〈1;countries〉)]: string 630 } 631 〈0;FlagsURLs〉 632 } 633 } 634 } 635 patternCycle: { 636 issue2109: { 637 p2: { 638 FlagsURLs: { 639 [or(〈1;countries〉)]: string 640 } 641 〈0;FlagsURLs〉 642 countries: [ 643 "US", 644 "GB", 645 "AU", 646 ] 647 } 648 } 649 } 650 patternCycle: { 651 issue2109: { 652 p3: { 653 〈0;FlagsURLs〉 654 FlagsURLs: { 655 [or(〈1;countries〉)]: string 656 } 657 countries: [ 658 "US", 659 "GB", 660 "AU", 661 ] 662 } 663 } 664 } 665 patternCycle: { 666 t1: { 667 p1: { 668 countries: ("US"|"GB"|"AU") 669 FlagsURLs: { 670 [〈1;countries〉]: string 671 } 672 〈0;FlagsURLs〉 673 } 674 } 675 } 676 patternCycle: { 677 t1: { 678 p2: { 679 〈0;FlagsURLs〉 680 countries: ("US"|"GB"|"AU") 681 FlagsURLs: { 682 [〈1;countries〉]: string 683 } 684 } 685 } 686 } 687 patternCycle: { 688 t1: { 689 p3: { 690 〈0;FlagsURLs〉 691 FlagsURLs: { 692 [〈1;countries〉]: string 693 } 694 countries: ("US"|"GB"|"AU") 695 } 696 } 697 } 698 }