# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: cannot resolve references that would be ambiguous
#evalFull
-- in.cue --
a1: *0 | 1
a1: a3 - a2
a2: *0 | 1
a2: a3 - a1
a3: 1

b1: (*0 | 1) & b2
b2: (0 | *1) & b1

c1: (*{a: 1} | {b: 1}) & c2
c2: (*{a: 2} | {b: 2}) & c1
-- out/def --
a1: (*0 | 1) & a3-a2
a3: 1
a2: (*0 | 1) & a3-a1
b1: (*0 | 1) & b2
b2: (0 | *1) & b1
c1: (*{
	a: 1
} | {
	b: 1
}) & c2
c2: (*{
	a: 2
} | {
	b: 2
}) & c1
-- out/legacy-debug --
<0>{a1: ((*0 | 1) & (<1>.a3 - <1>.a2)), a3: 1, a2: ((*0 | 1) & (<1>.a3 - <1>.a1)), b1: (0 | 1), b2: (0 | 1), c1: (<2>{a: 1, b: 2} | <3>{a: 2, b: 1}), c2: (<4>{a: 2, b: 1} | <5>{a: 1, b: 2})}
-- out/compile --
--- in.cue
{
  a1: (*0|1)
  a1: (〈0;a3〉 - 〈0;a2〉)
  a2: (*0|1)
  a2: (〈0;a3〉 - 〈0;a1〉)
  a3: 1
  b1: ((*0|1) & 〈0;b2〉)
  b2: ((0|*1) & 〈0;b1〉)
  c1: ((*{
    a: 1
  }|{
    b: 1
  }) & 〈0;c2〉)
  c2: ((*{
    a: 2
  }|{
    b: 2
  }) & 〈0;c1〉)
}
-- out/eval --
(struct){
  a1: (_|_){
    // [incomplete] a1: incomplete cause disjunction
  }
  a2: (_|_){
    // [incomplete] a2: incomplete cause disjunction
  }
  a3: (int){ 1 }
  b1: (int){ |((int){ 0 }, (int){ 1 }) }
  b2: (int){ |((int){ 1 }, (int){ 0 }) }
  c1: (struct){ |((struct){
      a: (int){ 1 }
      b: (int){ 2 }
    }, (struct){
      b: (int){ 1 }
      a: (int){ 2 }
    }) }
  c2: (struct){ |((struct){
      a: (int){ 2 }
      b: (int){ 1 }
    }, (struct){
      b: (int){ 2 }
      a: (int){ 1 }
    }) }
}
