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