github.com/solo-io/cue@v0.4.7/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 64 -- out/eval -- 65 (struct){ 66 default: (struct){ 67 y: ((int|struct)){ |(*(int){ 1 }, (struct){ 68 a: (int){ 2 } 69 }) } 70 a: (int){ 2 } 71 } 72 unambiguous: (struct){ 73 y: ((int|struct)){ |((int){ 1 }, (struct){ 74 a: (int){ 2 } 75 }) } 76 a: (int){ 2 } 77 } 78 forDefault: (struct){ 79 y: ((int|struct)){ |(*(int){ 1 }, (struct){ 80 a: (int){ 2 } 81 }) } 82 a: (int){ 2 } 83 } 84 openDefault: ((int|struct)){ |(*(int){ 85 1 86 #y: ((int|struct)){ |(*(int){ 1 }, (#struct){ 87 a: (int){ 2 } 88 }) } 89 }, (#struct){ 90 #y: ((int|struct)){ |(*(int){ 1 }, (#struct){ 91 a: (int){ 2 } 92 }) } 93 a: (int){ 2 } 94 }) } 95 openAmbiguous: ((int|struct)){ |((int){ 96 1 97 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 98 a: (int){ 2 } 99 }) } 100 }, (#struct){ 101 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 102 a: (int){ 2 } 103 }) } 104 a: (int){ 2 } 105 }) } 106 forceStruct: (#struct){ 107 #y: ((int|struct)){ |((int){ 1 }, (#struct){ 108 a: (int){ 2 } 109 }) } 110 a: (int){ 2 } 111 } 112 defaultsMulti: (struct){ 113 a: (struct){ 114 #def: (#struct){ |(*(#struct){ 115 }, (#struct){ 116 c: (string){ string } 117 }, (#struct){ 118 d: (string){ string } 119 }, (#struct){ 120 a: (string){ string } 121 }, (#struct){ 122 a: (string){ string } 123 c: (string){ string } 124 }, (#struct){ 125 a: (string){ string } 126 d: (string){ string } 127 }, (#struct){ 128 b: (string){ string } 129 }, (#struct){ 130 b: (string){ string } 131 c: (string){ string } 132 }, (#struct){ 133 b: (string){ string } 134 d: (string){ string } 135 }) } 136 a: (#struct){ |(*(#struct){ 137 a: (string){ "foo" } 138 }, (#struct){ 139 a: (string){ "foo" } 140 c: (string){ string } 141 }, (#struct){ 142 a: (string){ "foo" } 143 d: (string){ string } 144 }) } 145 } 146 b: (struct){ 147 #def: (#struct){ |(*(#struct){ 148 }, (#struct){ 149 d: (string){ string } 150 }, (#struct){ 151 e: (string){ string } 152 }, (#struct){ 153 c: (string){ string } 154 }, (#struct){ 155 c: (string){ string } 156 d: (string){ string } 157 }, (#struct){ 158 c: (string){ string } 159 e: (string){ string } 160 }, (#struct){ 161 d: (string){ string } 162 e: (string){ string } 163 }, (#struct){ 164 a: (string){ string } 165 }, (#struct){ 166 a: (string){ string } 167 d: (string){ string } 168 }, (#struct){ 169 a: (string){ string } 170 e: (string){ string } 171 }, (#struct){ 172 a: (string){ string } 173 c: (string){ string } 174 }, (#struct){ 175 a: (string){ string } 176 c: (string){ string } 177 d: (string){ string } 178 }, (#struct){ 179 a: (string){ string } 180 c: (string){ string } 181 e: (string){ string } 182 }, (#struct){ 183 a: (string){ string } 184 d: (string){ string } 185 e: (string){ string } 186 }, (#struct){ 187 b: (string){ string } 188 }, (#struct){ 189 b: (string){ string } 190 d: (string){ string } 191 }, (#struct){ 192 b: (string){ string } 193 e: (string){ string } 194 }, (#struct){ 195 b: (string){ string } 196 c: (string){ string } 197 }, (#struct){ 198 b: (string){ string } 199 c: (string){ string } 200 d: (string){ string } 201 }, (#struct){ 202 b: (string){ string } 203 c: (string){ string } 204 e: (string){ string } 205 }, (#struct){ 206 b: (string){ string } 207 d: (string){ string } 208 e: (string){ string } 209 }) } 210 a: (#struct){ |(*(#struct){ 211 a: (string){ "foo" } 212 e: (string){ "bar" } 213 }, (#struct){ 214 a: (string){ "foo" } 215 e: (string){ "bar" } 216 c: (string){ string } 217 }, (#struct){ 218 a: (string){ "foo" } 219 e: (string){ "bar" } 220 d: (string){ string } 221 }) } 222 } 223 } 224 nested: (struct){ 225 a: (int){ |(*(int){ 7 }, (int){ 2 }, (int){ 3 }, (int){ 4 }, (int){ 1 }) } 226 } 227 } 228 -- out/compile -- 229 --- in.cue 230 { 231 default: { 232 y: (*1|{ 233 a: 2 234 }) 235 〈0;y〉 236 } 237 unambiguous: { 238 y: (1|{ 239 a: 2 240 }) 241 〈0;y〉 242 } 243 forDefault: { 244 y: (*1|{ 245 a: 2 246 }) 247 for _, x in [ 248 1, 249 ] { 250 〈2;y〉 251 } 252 } 253 openDefault: { 254 #y: (*1|{ 255 a: 2 256 }) 257 〈0;#y〉 258 } 259 openAmbiguous: { 260 #y: (1|{ 261 a: 2 262 }) 263 〈0;#y〉 264 } 265 forceStruct: { 266 #y: (1|{ 267 a: 2 268 }) 269 〈0;#y〉 270 {} 271 } 272 defaultsMulti: { 273 a: { 274 #def: { 275 (*{}|{ 276 a: string 277 }|{ 278 b: string 279 }) 280 (*{}|{ 281 c: string 282 }|{ 283 d: string 284 }) 285 } 286 a: (〈0;#def〉 & { 287 a: "foo" 288 }) 289 } 290 b: { 291 #def: { 292 (*{}|{ 293 a: string 294 }|{ 295 b: string 296 }) 297 (*{}|{ 298 c: string 299 }|{ 300 d: string 301 }) 302 (*{}|{ 303 d: string 304 }|{ 305 e: string 306 }) 307 } 308 a: (〈0;#def〉 & { 309 a: "foo" 310 e: "bar" 311 }) 312 } 313 } 314 nested: { 315 a: (1|2|*((3|4|*(5|6|*7)) & (3|4|(*7|8)))) 316 } 317 }