cuelang.org/go@v0.10.1/cue/testdata/eval/issue599.txtar (about) 1 -- in.cue -- 2 package deps 3 4 a: { 5 #A: { 6 n: string 7 depends_on: [...#AnyA] 8 } 9 10 #AnyA: { 11 n: string 12 depends_on: [...#AnyA] 13 ... 14 } 15 16 #A1: { 17 #A 18 x: int 19 y: z: string // Comment to avoid error 20 } 21 22 #A2: { 23 #A 24 i: string 25 } 26 27 s: [Name=string]: #AnyA & {n: Name} 28 29 s: foo: #A1 & { 30 x: 10 31 y: z: "z" // Comment to avoid error 32 } 33 34 s: bar: #A2 & { 35 i: "hello bar" 36 depends_on: [s.foo] 37 } 38 } 39 40 b: { 41 #A: { 42 f: {...} 43 } 44 45 #A1: { 46 #A 47 // f: {...} // Uncomment to fix 48 } 49 50 #C: { 51 d: {...} 52 } 53 54 s: [string]: #A1 55 56 s: foo: { 57 f: #C & { 58 d: foo: "bar" 59 } 60 } 61 } 62 -- out/eval/stats -- 63 Leaks: 0 64 Freed: 47 65 Reused: 39 66 Allocs: 8 67 Retain: 0 68 69 Unifications: 47 70 Conjuncts: 122 71 Disjuncts: 47 72 -- out/evalalpha -- 73 (struct){ 74 a: (struct){ 75 #A: (#struct){ 76 n: (string){ string } 77 depends_on: (list){ 78 } 79 } 80 #AnyA: (#struct){ 81 n: (string){ string } 82 depends_on: (list){ 83 } 84 } 85 #A1: (#struct){ 86 x: (int){ int } 87 y: (#struct){ 88 z: (string){ string } 89 } 90 n: (string){ string } 91 depends_on: (list){ 92 } 93 } 94 #A2: (#struct){ 95 i: (string){ string } 96 n: (string){ string } 97 depends_on: (list){ 98 } 99 } 100 s: (struct){ 101 foo: (#struct){ 102 x: (int){ 10 } 103 y: (#struct){ 104 z: (string){ "z" } 105 } 106 n: (string){ "foo" } 107 depends_on: (list){ 108 } 109 } 110 bar: (#struct){ 111 i: (string){ "hello bar" } 112 depends_on: (#list){ 113 0: (#struct){ 114 x: (int){ 10 } 115 y: (#struct){ 116 z: (string){ "z" } 117 } 118 n: (string){ "foo" } 119 depends_on: (list){ 120 } 121 } 122 } 123 n: (string){ "bar" } 124 } 125 } 126 } 127 b: (struct){ 128 #A: (#struct){ 129 f: (#struct){ 130 } 131 } 132 #A1: (#struct){ 133 f: (#struct){ 134 } 135 } 136 #C: (#struct){ 137 d: (#struct){ 138 } 139 } 140 s: (struct){ 141 foo: (#struct){ 142 f: (#struct){ 143 d: (#struct){ 144 foo: (string){ "bar" } 145 } 146 } 147 } 148 } 149 } 150 } 151 -- diff/-out/evalalpha<==>+out/eval -- 152 diff old new 153 --- old 154 +++ new 155 @@ -11,44 +11,44 @@ 156 } 157 } 158 #A1: (#struct){ 159 - n: (string){ string } 160 - depends_on: (list){ 161 - } 162 x: (int){ int } 163 y: (#struct){ 164 z: (string){ string } 165 } 166 + n: (string){ string } 167 + depends_on: (list){ 168 + } 169 } 170 #A2: (#struct){ 171 - n: (string){ string } 172 - depends_on: (list){ 173 - } 174 i: (string){ string } 175 - } 176 - s: (struct){ 177 - foo: (#struct){ 178 - n: (string){ "foo" } 179 - depends_on: (list){ 180 - } 181 + n: (string){ string } 182 + depends_on: (list){ 183 + } 184 + } 185 + s: (struct){ 186 + foo: (#struct){ 187 x: (int){ 10 } 188 y: (#struct){ 189 z: (string){ "z" } 190 } 191 + n: (string){ "foo" } 192 + depends_on: (list){ 193 + } 194 } 195 bar: (#struct){ 196 - n: (string){ "bar" } 197 + i: (string){ "hello bar" } 198 depends_on: (#list){ 199 0: (#struct){ 200 - n: (string){ "foo" } 201 - depends_on: (list){ 202 - } 203 x: (int){ 10 } 204 y: (#struct){ 205 z: (string){ "z" } 206 } 207 - } 208 - } 209 - i: (string){ "hello bar" } 210 + n: (string){ "foo" } 211 + depends_on: (list){ 212 + } 213 + } 214 + } 215 + n: (string){ "bar" } 216 } 217 } 218 } 219 -- diff/todo/p3 -- 220 Reordering 221 -- out/eval -- 222 (struct){ 223 a: (struct){ 224 #A: (#struct){ 225 n: (string){ string } 226 depends_on: (list){ 227 } 228 } 229 #AnyA: (#struct){ 230 n: (string){ string } 231 depends_on: (list){ 232 } 233 } 234 #A1: (#struct){ 235 n: (string){ string } 236 depends_on: (list){ 237 } 238 x: (int){ int } 239 y: (#struct){ 240 z: (string){ string } 241 } 242 } 243 #A2: (#struct){ 244 n: (string){ string } 245 depends_on: (list){ 246 } 247 i: (string){ string } 248 } 249 s: (struct){ 250 foo: (#struct){ 251 n: (string){ "foo" } 252 depends_on: (list){ 253 } 254 x: (int){ 10 } 255 y: (#struct){ 256 z: (string){ "z" } 257 } 258 } 259 bar: (#struct){ 260 n: (string){ "bar" } 261 depends_on: (#list){ 262 0: (#struct){ 263 n: (string){ "foo" } 264 depends_on: (list){ 265 } 266 x: (int){ 10 } 267 y: (#struct){ 268 z: (string){ "z" } 269 } 270 } 271 } 272 i: (string){ "hello bar" } 273 } 274 } 275 } 276 b: (struct){ 277 #A: (#struct){ 278 f: (#struct){ 279 } 280 } 281 #A1: (#struct){ 282 f: (#struct){ 283 } 284 } 285 #C: (#struct){ 286 d: (#struct){ 287 } 288 } 289 s: (struct){ 290 foo: (#struct){ 291 f: (#struct){ 292 d: (#struct){ 293 foo: (string){ "bar" } 294 } 295 } 296 } 297 } 298 } 299 } 300 -- out/compile -- 301 --- in.cue 302 { 303 a: { 304 #A: { 305 n: string 306 depends_on: [ 307 ...〈2;#AnyA〉, 308 ] 309 } 310 #AnyA: { 311 n: string 312 depends_on: [ 313 ...〈2;#AnyA〉, 314 ] 315 ... 316 } 317 #A1: { 318 〈1;#A〉 319 x: int 320 y: { 321 z: string 322 } 323 } 324 #A2: { 325 〈1;#A〉 326 i: string 327 } 328 s: { 329 [string]: (〈1;#AnyA〉 & { 330 n: 〈1;-〉 331 }) 332 } 333 s: { 334 foo: (〈1;#A1〉 & { 335 x: 10 336 y: { 337 z: "z" 338 } 339 }) 340 } 341 s: { 342 bar: (〈1;#A2〉 & { 343 i: "hello bar" 344 depends_on: [ 345 〈3;s〉.foo, 346 ] 347 }) 348 } 349 } 350 b: { 351 #A: { 352 f: { 353 ... 354 } 355 } 356 #A1: { 357 〈1;#A〉 358 } 359 #C: { 360 d: { 361 ... 362 } 363 } 364 s: { 365 [string]: 〈1;#A1〉 366 } 367 s: { 368 foo: { 369 f: (〈2;#C〉 & { 370 d: { 371 foo: "bar" 372 } 373 }) 374 } 375 } 376 } 377 }