-- in.cue --
#Value: 0 | 1

foo: #Value
foo: !=bar
bar: #Value
bar: !=foo

#Value: 0 | 1

Foo: #Value
Foo: !=Bar
Bar: #Value
Bar: !=Foo
Bar: 0

cell: a: 0 | 1
cell: a: !=cell.b
cell: b: 0 | 1
cell: b: !=cell.a
cell: a: 0
cell: b: _

a: cell.a
b: cell.b
-- out/eval/stats --
Leaks:  0
Freed:  47
Reused: 39
Allocs: 8
Retain: 7

Unifications: 11
Conjuncts:    101
Disjuncts:    47
-- out/evalalpha --
(struct){
  #Value: (int){ |((int){ 0 }, (int){ 1 }) }
  foo: (_|_){
    // [cycle] foo: cycle across unresolved disjunction referenced by bar:
    //     ./in.cue:1:13
    //     ./in.cue:5:6
    //     ./in.cue:6:6
  }
  bar: (int){ |((int){ 0 }, (int){ 1 }) }
  Foo: (int){ 1 }
  Bar: (int){ 0 }
  cell: (struct){
    a: (int){ 0 }
    b: (int){ 1 }
  }
  a: (int){ 0 }
  b: (int){ 1 }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -1,8 +1,10 @@
 (struct){
   #Value: (int){ |((int){ 0 }, (int){ 1 }) }
   foo: (_|_){
-    // [incomplete] foo: unresolved disjunction 0 | 1 (type int):
-    //     ./in.cue:4:6
+    // [cycle] foo: cycle across unresolved disjunction referenced by bar:
+    //     ./in.cue:1:13
+    //     ./in.cue:5:6
+    //     ./in.cue:6:6
   }
   bar: (int){ |((int){ 0 }, (int){ 1 }) }
   Foo: (int){ 1 }
-- diff/explanation --
error is now symmetric
-- out/eval --
(struct){
  #Value: (int){ |((int){ 0 }, (int){ 1 }) }
  foo: (_|_){
    // [incomplete] foo: unresolved disjunction 0 | 1 (type int):
    //     ./in.cue:4:6
  }
  bar: (int){ |((int){ 0 }, (int){ 1 }) }
  Foo: (int){ 1 }
  Bar: (int){ 0 }
  cell: (struct){
    a: (int){ 0 }
    b: (int){ 1 }
  }
  a: (int){ 0 }
  b: (int){ 1 }
}
-- out/compile --
--- in.cue
{
  #Value: (0|1)
  foo: 〈0;#Value〉
  foo: !=〈0;bar〉
  bar: 〈0;#Value〉
  bar: !=〈0;foo〉
  #Value: (0|1)
  Foo: 〈0;#Value〉
  Foo: !=〈0;Bar〉
  Bar: 〈0;#Value〉
  Bar: !=〈0;Foo〉
  Bar: 0
  cell: {
    a: (0|1)
  }
  cell: {
    a: !=〈1;cell〉.b
  }
  cell: {
    b: (0|1)
  }
  cell: {
    b: !=〈1;cell〉.a
  }
  cell: {
    a: 0
  }
  cell: {
    b: _
  }
  a: 〈0;cell〉.a
  b: 〈0;cell〉.b
}
