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