cuelang.org/go@v0.10.1/cue/format/testdata/expressions.txtar (about) 1 2 -- expressions.input -- 3 package expressions 4 5 import "list" 6 7 { 8 a: 1 // comment 9 aaa: 22 // comment 10 11 "": 3 12 13 b: 3 14 15 c: b: a: 4 16 c?: bb?: aaa?: 5 17 c: b: [Name=string]: a: int 18 let alias = 3.14 19 "g\("en")"?: 4 20 21 let alias2 = foo // with comment 22 let aaalias = foo 23 b: bar 24 25 bottom: _|_ 26 27 a: 28 b: 29 c: 2 30 31 req!: int 32 33 a: bbbb: c: 3 34 a: b: 3 35 a: bb: cc: 3 36 37 empty: {} 38 emptyNewLine: { 39 40 } 41 someObject: { 42 a: 8 43 aa: 9 44 aaa: 10 45 } 46 47 #someDefinition: { 48 embedding 49 50 field: 2 51 } 52 53 #openDef: { 54 a: int 55 ... 56 } 57 58 attrs: { 59 a: 8 @go(A) // comment 60 aa: 8 @go(A) // comment 61 bb: 9 62 bbb: 10 @go(Bbb) @xml(,attr) // comment 63 bbbb: 100 @go(Bbbb) @xml(,attr) // comment 64 } 65 66 foo: bar: string @go(-) 67 68 e: 1+2*3 69 e: 1*2*3 // error 70 e: >=2 & <=3 71 e: >2 & <=(3 + 4) 72 ex: >2 & <=(3 + 4*5) 73 e: >2 & <=3 & <=4 74 e: 1 + 2 + 3 // error 75 76 e: s[1+2] 77 e: s[1:2] 78 e: s[1+2:2+4] 79 e: s[2] 80 e: s[2*3] 81 e: s[1+2*3] 82 83 e: a | 84 b| 85 c 86 87 e: 88 a| 89 b| c | 90 d 91 92 e: f(3+4+5) 93 e: f(3*4*5) 94 e: f(3+4*5) 95 96 e: f(3 + 4 div 5) 97 98 e: 3<4&&5>4 99 e: a || b && c || d 100 101 e: a + +b * 3 102 e: -a - -b 103 104 e: b + c 105 e: b*c + d 106 e: a*b + c 107 e: a - b - c 108 e: a - (b - c) 109 e: a - b*c 110 e: a - (b * c) 111 e: a * b / c 112 e: a div b + 5 113 e: a / b 114 e: x[a|b] 115 e: x[a /b] 116 e: a & b 117 e: a + +b 118 e: a - -b 119 e: a div - b 120 e: x[a*-b] 121 e: x[a + +b] 122 e: len(longVariableName) * 2 123 124 e: "\(a)" 125 e: 'aa \(aaa) aa' 126 e: "aa \(aaa)" 127 128 e: [ 129 ] 130 e: [ 131 132 ] 133 e: [1, 2 134 ] 135 e: [1, 2] 136 e: [1, 2, 3, 4, 137 5, 6, 7, 8] 138 e: [1, 2, 3, 4, 139 5, 6, 7, 8 // maybe force additional comma 140 ] 141 e: [...] 142 e: [ 143 ...] 144 e: [... 145 ] 146 e: [1, 2, ...] 147 e: [1, 2, 148 ...] 149 e: [...int] 150 e: [...int,] 151 e: [...int | float] 152 e: [for x in someObject if x > 9 { 153 x 154 }] 155 e: [for x in someObject if x > 9 {x}] 156 e: [ 157 for x in someObject 158 if x > 9 {x}] 159 e: [ 160 for x in someObject 161 if x > 9 162 {x}] 163 164 e: [ 165 if x > 1 {}, 166 if x > 1 {}, 167 for x in src {}, 168 ] 169 170 for k, v in someObject { 171 "\(k)": v 172 } 173 for k, v in someObject { 174 "\(k)": v 175 } 176 177 e: { 178 for k, v in someObject 179 if k > "a" { 180 "\(k)":v 181 } 182 } 183 184 e: { for k, v in someObject if k > "a" {"\(k)":v} } 185 e: { for k, v in someObject if k > "a" { 186 "\(k)":v }} 187 188 e: { 189 for k, v in someObject 190 let x = v 191 if k > "a" { 192 "\(k)":x}} 193 194 if a | 195 b { 196 c: d 197 } 198 199 e: [{ 200 a: 1, b: 2, 201 }] 202 203 e: [{ 204 a: 1, b: 2, 205 }, 206 ] 207 208 e: [{ 209 a: 1, b: 2, 210 }, { 211 c: 1, d: 2, 212 }] 213 214 e: [{ 215 a: 1, b: 2, 216 }, 217 3, 218 4, 219 ] 220 221 e: e.f(1, 2) 222 223 e: ((3 + 4)) 224 225 // field before list 226 f: 3 227 a: [1, 2 // add comma 228 ] 229 230 foo : bar 231 232 a: "foo-bar": 3 233 b: a."foo-bar" 234 c: a. "foo-bar" . b 235 d: a. 236 "foo-bar" 237 e: a. 238 "foo-bar". 239 b 240 f: 2 241 242 "contains tabs": 123 243 @jsonschema(foo="contains tabs") 244 245 j: cueckoo: _ | [ 246 1, 247 248 2, 249 ] 250 k: cueckoo: *[ 251 1, 252 253 2, 254 ] 255 l: cueckoo: list.Concat([ 256 1, 257 258 2, 259 ]) 260 261 m: [1, 2, 3] 262 m: [1, 2, 3,] 263 m: [ 1, 2, 3, ] 264 m: [ 1, 2, 3,] 265 m: [ 1, 2, 3,] 266 m: [ 1, 2, 3] 267 m: [ 1, 2, 3,] 268 m: [ 1, 2, 3, ] 269 m: [ 1, 2, 3 ] 270 m: [ if true { 1 }, 2, 3] 271 n: [ 1] 272 o: [{}] 273 o: [ {}] 274 o: [{} ] 275 o: [ {} ] 276 277 p: 1 278 p: p & {p: 2} 279 q: 1 280 q: q | {q: 2} 281 r: 1 282 r: b & [1, 2, {a: 4}] 283 s: [string]: [string]: a 284 s: [string]: {s: string} 285 } 286 -- expressions.golden -- 287 package expressions 288 289 import "list" 290 291 { 292 a: 1 // comment 293 aaa: 22 // comment 294 295 "": 3 296 297 b: 3 298 299 c: b: a: 4 300 c?: bb?: aaa?: 5 301 c: b: [Name=string]: a: int 302 let alias = 3.14 303 "g\("en")"?: 4 304 305 let alias2 = foo // with comment 306 let aaalias = foo 307 b: bar 308 309 bottom: _|_ 310 311 a: 312 b: 313 c: 2 314 315 req!: int 316 317 a: bbbb: c: 3 318 a: b: 3 319 a: bb: cc: 3 320 321 empty: {} 322 emptyNewLine: {} 323 someObject: { 324 a: 8 325 aa: 9 326 aaa: 10 327 } 328 329 #someDefinition: { 330 embedding 331 332 field: 2 333 } 334 335 #openDef: { 336 a: int 337 ... 338 } 339 340 attrs: { 341 a: 8 @go(A) // comment 342 aa: 8 @go(A) // comment 343 bb: 9 344 bbb: 10 @go(Bbb) @xml(,attr) // comment 345 bbbb: 100 @go(Bbbb) @xml(,attr) // comment 346 } 347 348 foo: { 349 bar: string @go(-) 350 } 351 352 e: 1 + 2*3 353 e: 1 * 2 * 3 // error 354 e: >=2 & <=3 355 e: >2 & <=(3 + 4) 356 ex: >2 & <=(3 + 4*5) 357 e: >2 & <=3 & <=4 358 e: 1 + 2 + 3 // error 359 360 e: s[1+2] 361 e: s[1:2] 362 e: s[1+2 : 2+4] 363 e: s[2] 364 e: s[2*3] 365 e: s[1+2*3] 366 367 e: a | 368 b | 369 c 370 371 e: 372 a | 373 b | c | 374 d 375 376 e: f(3 + 4 + 5) 377 e: f(3 * 4 * 5) 378 e: f(3 + 4*5) 379 380 e: f(3 + 4 div 5) 381 382 e: 3 < 4 && 5 > 4 383 e: a || b && c || d 384 385 e: a + +b*3 386 e: -a - -b 387 388 e: b + c 389 e: b*c + d 390 e: a*b + c 391 e: a - b - c 392 e: a - (b - c) 393 e: a - b*c 394 e: a - (b * c) 395 e: a * b / c 396 e: a div b + 5 397 e: a / b 398 e: x[a | b] 399 e: x[a/b] 400 e: a & b 401 e: a + +b 402 e: a - -b 403 e: a div -b 404 e: x[a*-b] 405 e: x[a + +b] 406 e: len(longVariableName) * 2 407 408 e: "\(a)" 409 e: 'aa \(aaa) aa' 410 e: "aa \(aaa)" 411 412 e: [] 413 e: [] 414 e: [1, 2, 415 ] 416 e: [1, 2] 417 e: [1, 2, 3, 4, 418 5, 6, 7, 8] 419 e: [1, 2, 3, 4, 420 5, 6, 7, 8, // maybe force additional comma 421 ] 422 e: [...] 423 e: [ 424 ...] 425 e: [..., 426 ] 427 e: [1, 2, ...] 428 e: [1, 2, 429 ...] 430 e: [...int] 431 e: [...int] 432 e: [...int | float] 433 e: [for x in someObject if x > 9 { 434 x 435 }] 436 e: [for x in someObject if x > 9 {x}] 437 e: [ 438 for x in someObject 439 if x > 9 {x}] 440 e: [ 441 for x in someObject 442 if x > 9 {x}] 443 444 e: [ 445 if x > 1 {}, 446 if x > 1 {}, 447 for x in src {}, 448 ] 449 450 for k, v in someObject { 451 "\(k)": v 452 } 453 for k, v in someObject { 454 "\(k)": v 455 } 456 457 e: { 458 for k, v in someObject 459 if k > "a" { 460 "\(k)": v 461 } 462 } 463 464 e: {for k, v in someObject if k > "a" {"\(k)": v}} 465 e: {for k, v in someObject if k > "a" { 466 "\(k)": v 467 }} 468 469 e: { 470 for k, v in someObject 471 let x = v 472 if k > "a" { 473 "\(k)": x 474 }} 475 476 if a | 477 b { 478 c: d 479 } 480 481 e: [{ 482 a: 1, b: 2 483 }] 484 485 e: [{ 486 a: 1, b: 2 487 }, 488 ] 489 490 e: [{ 491 a: 1, b: 2 492 }, { 493 c: 1, d: 2 494 }] 495 496 e: [{ 497 a: 1, b: 2 498 }, 499 3, 500 4, 501 ] 502 503 e: e.f(1, 2) 504 505 e: (3 + 4) 506 507 // field before list 508 f: 3 509 a: [1, 2, // add comma 510 ] 511 512 foo: bar 513 514 a: "foo-bar": 3 515 b: a."foo-bar" 516 c: a."foo-bar".b 517 d: a. 518 "foo-bar" 519 e: a. 520 "foo-bar". 521 b 522 f: 2 523 524 "contains tabs": 123 525 @jsonschema(foo="contains tabs") 526 527 j: cueckoo: _ | [ 528 1, 529 530 2, 531 ] 532 k: cueckoo: *[ 533 1, 534 535 2, 536 ] 537 l: cueckoo: list.Concat([ 538 1, 539 540 2, 541 ]) 542 543 m: [1, 2, 3] 544 m: [1, 2, 3] 545 m: [1, 2, 3] 546 m: [1, 2, 3] 547 m: [1, 2, 3] 548 m: [1, 2, 3] 549 m: [1, 2, 3] 550 m: [1, 2, 3] 551 m: [1, 2, 3] 552 m: [if true {1}, 2, 3] 553 n: [1] 554 o: [{}] 555 o: [{}] 556 o: [{}] 557 o: [{}] 558 559 p: 1 560 p: p & {p: 2} 561 q: 1 562 q: q | {q: 2} 563 r: 1 564 r: b & [1, 2, {a: 4}] 565 s: [string]: [string]: a 566 s: [string]: {s: string} 567 } 568 -- issue2496.input -- 569 machine_type: [ 570 if arch == "amd" {"n2-standard-2"}, 571 if arch == "arm" {"t2a-standard-2"}, 572 "unknown arch", 573 ][0] 574 575 long_field_name: ([ 576 "foo" 577 ]) 578 579 long_field_name: [ 580 "foo" 581 ].bar 582 583 // TODO(mvdan): we insert an empty line between the definitions. 584 _foo: { 585 #tool: string 586 #arch: string 587 588 // skip_create_image: true 589 } 590 -- issue2496.golden -- 591 machine_type: [ 592 if arch == "amd" {"n2-standard-2"}, 593 if arch == "arm" {"t2a-standard-2"}, 594 "unknown arch", 595 ][0] 596 597 long_field_name: ([ 598 "foo", 599 ]) 600 601 long_field_name: [ 602 "foo", 603 ].bar 604 605 // TODO(mvdan): we insert an empty line between the definitions. 606 _foo: { 607 #tool: string 608 609 #arch: string 610 611 // skip_create_image: true 612 }