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