cuelang.org/go@v0.13.0/cue/testdata/disjunctions/embed.txtar (about) 1 -- in.cue -- 2 // Given the existence of this field, embedDefault is a struct. This 3 // means that embedding this conjunction into `embedDefault` itself should 4 // make it resolve to `{a: 2}`. 5 6 default: { 7 y: *1 | {a: 2} 8 y 9 } 10 11 unambiguous: { 12 y: 1 | {a: 2} 13 y 14 } 15 16 forDefault: { 17 y: *1 | {a: 2} 18 for x in [1] {y} 19 } 20 21 // Carry over default to first disjunct. 22 openDefault: { 23 #y: *1 | {a: 2} 24 #y 25 } 26 27 openAmbiguous: { 28 #y: 1 | {a: 2} 29 #y 30 } 31 32 forceStruct: { 33 #y: 1 | {a: 2} 34 #y 35 {} 36 } 37 38 defaultsMulti: { 39 a: { 40 #def: { 41 *{} | {a: string} | {b: string} 42 *{} | {c: string} | {d: string} 43 } 44 45 a: #def & {a: "foo"} 46 } 47 48 b: { 49 #def: { 50 *{} | {a: string} | {b: string} 51 *{} | {c: string} | {d: string} 52 *{} | {d: string} | {e: string} 53 } 54 55 a: #def & {a: "foo", e: "bar"} 56 } 57 } 58 59 nested: { 60 a: 1 | 2 | *( 61 (3 | 4 | *( 5 | 6 | *7)) & ( 3 | 4 | ( *7 | 8 ))) 62 } 63 -- issue3415.cue -- 64 issue3415: full: { 65 A: #A & { 66 i: { 67 _a + _b 68 _a: 1 69 _b: 10 70 } 71 } 72 #A: { 73 i: *0 | number 74 } 75 } 76 issue3415: reduced: { 77 a: { 78 1 + #b 79 #b: 10 80 } 81 a: *0 | number 82 } 83 -- out/evalalpha/stats -- 84 Leaks: 221 85 Freed: 0 86 Reused: 0 87 Allocs: 221 88 Retain: 0 89 90 Unifications: 73 91 Conjuncts: 219 92 Disjuncts: 106 93 -- diff/-out/evalalpha/stats<==>+out/eval/stats -- 94 diff old new 95 --- old 96 +++ new 97 @@ -1,9 +1,9 @@ 98 -Leaks: 19 99 -Freed: 430 100 -Reused: 413 101 -Allocs: 36 102 -Retain: 5 103 +Leaks: 221 104 +Freed: 0 105 +Reused: 0 106 +Allocs: 221 107 +Retain: 0 108 109 -Unifications: 268 110 -Conjuncts: 502 111 -Disjuncts: 438 112 +Unifications: 73 113 +Conjuncts: 219 114 +Disjuncts: 106 115 -- out/eval/stats -- 116 Leaks: 19 117 Freed: 430 118 Reused: 413 119 Allocs: 36 120 Retain: 5 121 122 Unifications: 268 123 Conjuncts: 502 124 Disjuncts: 438 125 -- out/eval -- 126 (struct){ 127 default: (struct){ 128 y: ((int|struct)){ |(*(int){ 1 }, (struct){ 129 a: (int){ 2 } 130 }) } 131 a: (int){ 2 } 132 } 133 unambiguous: (struct){ 134 y: ((int|struct)){ |((int){ 1 }, (struct){ 135 a: (int){ 2 } 136 }) } 137 a: (int){ 2 } 138 } 139 forDefault: (struct){ 140 y: ((int|struct)){ |(*(int){ 1 }, (struct){ 141 a: (int){ 2 } 142 }) } 143 a: (int){ 2 } 144 } 145 openDefault: ((int|struct)){ |(*(int){ 146 1 147 #y: ((int|struct)){ |(*(int){ 1 }, (#struct){ 148 a: (int){ 2 } 149 }) } 150 }, (#struct){ 151 #y: ((int|struct)){ |(*(int){ 1 }, (#struct){ 152 a: (int){ 2 } 153 }) } 154 a: (int){ 2 } 155 }) } 156 openAmbiguous: ((int|struct)){ |((int){ 157 1 158 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 159 a: (int){ 2 } 160 }) } 161 }, (#struct){ 162 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 163 a: (int){ 2 } 164 }) } 165 a: (int){ 2 } 166 }) } 167 forceStruct: (#struct){ 168 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 169 a: (int){ 2 } 170 }) } 171 a: (int){ 2 } 172 } 173 defaultsMulti: (struct){ 174 a: (struct){ 175 #def: (#struct){ |(*(#struct){ 176 }, (#struct){ 177 c: (string){ string } 178 }, (#struct){ 179 d: (string){ string } 180 }, (#struct){ 181 a: (string){ string } 182 }, (#struct){ 183 a: (string){ string } 184 c: (string){ string } 185 }, (#struct){ 186 a: (string){ string } 187 d: (string){ string } 188 }, (#struct){ 189 b: (string){ string } 190 }, (#struct){ 191 b: (string){ string } 192 c: (string){ string } 193 }, (#struct){ 194 b: (string){ string } 195 d: (string){ string } 196 }) } 197 a: (#struct){ |(*(#struct){ 198 a: (string){ "foo" } 199 }, (#struct){ 200 a: (string){ "foo" } 201 c: (string){ string } 202 }, (#struct){ 203 a: (string){ "foo" } 204 d: (string){ string } 205 }) } 206 } 207 b: (struct){ 208 #def: (#struct){ |(*(#struct){ 209 }, (#struct){ 210 d: (string){ string } 211 }, (#struct){ 212 e: (string){ string } 213 }, (#struct){ 214 c: (string){ string } 215 }, (#struct){ 216 c: (string){ string } 217 d: (string){ string } 218 }, (#struct){ 219 c: (string){ string } 220 e: (string){ string } 221 }, (#struct){ 222 d: (string){ string } 223 e: (string){ string } 224 }, (#struct){ 225 a: (string){ string } 226 }, (#struct){ 227 a: (string){ string } 228 d: (string){ string } 229 }, (#struct){ 230 a: (string){ string } 231 e: (string){ string } 232 }, (#struct){ 233 a: (string){ string } 234 c: (string){ string } 235 }, (#struct){ 236 a: (string){ string } 237 c: (string){ string } 238 d: (string){ string } 239 }, (#struct){ 240 a: (string){ string } 241 c: (string){ string } 242 e: (string){ string } 243 }, (#struct){ 244 a: (string){ string } 245 d: (string){ string } 246 e: (string){ string } 247 }, (#struct){ 248 b: (string){ string } 249 }, (#struct){ 250 b: (string){ string } 251 d: (string){ string } 252 }, (#struct){ 253 b: (string){ string } 254 e: (string){ string } 255 }, (#struct){ 256 b: (string){ string } 257 c: (string){ string } 258 }, (#struct){ 259 b: (string){ string } 260 c: (string){ string } 261 d: (string){ string } 262 }, (#struct){ 263 b: (string){ string } 264 c: (string){ string } 265 e: (string){ string } 266 }, (#struct){ 267 b: (string){ string } 268 d: (string){ string } 269 e: (string){ string } 270 }) } 271 a: (#struct){ |(*(#struct){ 272 a: (string){ "foo" } 273 e: (string){ "bar" } 274 }, (#struct){ 275 a: (string){ "foo" } 276 e: (string){ "bar" } 277 c: (string){ string } 278 }, (#struct){ 279 a: (string){ "foo" } 280 e: (string){ "bar" } 281 d: (string){ string } 282 }) } 283 } 284 } 285 nested: (struct){ 286 a: (int){ |(*(int){ 7 }, (int){ 2 }, (int){ 3 }, (int){ 4 }, (int){ 1 }) } 287 } 288 issue3415: (struct){ 289 full: (struct){ 290 A: (#struct){ 291 i: (int){ 292 11 293 _a: (int){ 1 } 294 _b: (int){ 10 } 295 } 296 } 297 #A: (#struct){ 298 i: (number){ |(*(int){ 0 }, (number){ number }) } 299 } 300 } 301 reduced: (struct){ 302 a: (int){ 303 11 304 #b: (int){ 10 } 305 } 306 } 307 } 308 } 309 -- out/compile -- 310 --- in.cue 311 { 312 default: { 313 y: (*1|{ 314 a: 2 315 }) 316 〈0;y〉 317 } 318 unambiguous: { 319 y: (1|{ 320 a: 2 321 }) 322 〈0;y〉 323 } 324 forDefault: { 325 y: (*1|{ 326 a: 2 327 }) 328 for _, x in [ 329 1, 330 ] { 331 〈2;y〉 332 } 333 } 334 openDefault: { 335 #y: (*1|{ 336 a: 2 337 }) 338 〈0;#y〉 339 } 340 openAmbiguous: { 341 #y: (1|{ 342 a: 2 343 }) 344 〈0;#y〉 345 } 346 forceStruct: { 347 #y: (1|{ 348 a: 2 349 }) 350 〈0;#y〉 351 {} 352 } 353 defaultsMulti: { 354 a: { 355 #def: { 356 (*{}|{ 357 a: string 358 }|{ 359 b: string 360 }) 361 (*{}|{ 362 c: string 363 }|{ 364 d: string 365 }) 366 } 367 a: (〈0;#def〉 & { 368 a: "foo" 369 }) 370 } 371 b: { 372 #def: { 373 (*{}|{ 374 a: string 375 }|{ 376 b: string 377 }) 378 (*{}|{ 379 c: string 380 }|{ 381 d: string 382 }) 383 (*{}|{ 384 d: string 385 }|{ 386 e: string 387 }) 388 } 389 a: (〈0;#def〉 & { 390 a: "foo" 391 e: "bar" 392 }) 393 } 394 } 395 nested: { 396 a: (1|2|*((3|4|*(5|6|*7)) & (3|4|(*7|8)))) 397 } 398 } 399 --- issue3415.cue 400 { 401 issue3415: { 402 full: { 403 A: (〈0;#A〉 & { 404 i: { 405 (〈0;_a〉 + 〈0;_b〉) 406 _a: 1 407 _b: 10 408 } 409 }) 410 #A: { 411 i: (*0|number) 412 } 413 } 414 } 415 issue3415: { 416 reduced: { 417 a: { 418 (1 + 〈0;#b〉) 419 #b: 10 420 } 421 a: (*0|number) 422 } 423 } 424 }