#name: default disambiguation and elimination
#evalFull
-- in.cue --
a: *1 | int
b: *3 | int
c: a & b
d: b & a

e: *1 | *1
-- out/def --
a: *1 | int
b: *3 | int
c: a & b
d: b & a
e: 1
-- out/legacy-debug --
<0>{a: 1, b: 3, c: int, d: int, e: 1}
-- out/compile --
--- in.cue
{
  a: (*1|int)
  b: (*3|int)
  c: (〈0;a〉 & 〈0;b〉)
  d: (〈0;b〉 & 〈0;a〉)
  e: (*1|*1)
}
-- out/eval/stats --
Leaks:  0
Freed:  24
Reused: 17
Allocs: 7
Retain: 0

Unifications: 6
Conjuncts:    30
Disjuncts:    24
-- out/eval --
(struct){
  a: (int){ |(*(int){ 1 }, (int){ int }) }
  b: (int){ |(*(int){ 3 }, (int){ int }) }
  c: (int){ |((int){ 1 }, (int){ 3 }, (int){ int }) }
  d: (int){ |((int){ 3 }, (int){ 1 }, (int){ int }) }
  e: (int){ 1 }
}
