#name: resolved self-reference cycles: Issue 19
#evalPartial
-- in.cue --
// CUE knows how to resolve the following:
x: y + 100
y: x - 100
x: 200

z1: z2 + 1
z2: z3 + 2
z3: z1 - 3
z3: 8

// TODO: extensive tests with disjunctions.
-- out/def --
// CUE knows how to resolve the following:
x:  200
y:  100
z1: 11
z2: 10
z3: 8
-- out/export --
// CUE knows how to resolve the following:
x:  200
y:  100
z1: 11
z2: 10
z3: 8
-- out/yaml --
x: 200
y: 100
z1: 11
z2: 10
z3: 8
-- out/json --
{"x":200,"y":100,"z1":11,"z2":10,"z3":8}
-- out/legacy-debug --
<0>{x: 200, y: 100, z1: 11, z2: 10, z3: 8}
-- out/compile --
--- in.cue
{
  x: (〈0;y〉 + 100)
  y: (〈0;x〉 - 100)
  x: 200
  z1: (〈0;z2〉 + 1)
  z2: (〈0;z3〉 + 2)
  z3: (〈0;z1〉 - 3)
  z3: 8
}
-- out/eval/stats --
Leaks:  0
Freed:  6
Reused: 2
Allocs: 4
Retain: 3

Unifications: 6
Conjuncts:    6
Disjuncts:    8
-- out/eval --
(struct){
  x: (int){ 200 }
  y: (int){ 100 }
  z1: (int){ 11 }
  z2: (int){ 10 }
  z3: (int){ 8 }
}
