#name: comparison against bottom
#evalFull
-- in.cue --
a: _|_ == _|_
b: err == 1 & 2 // not a literal error, so not allowed
c: err == _|_   // allowed
d: err != _|_   // allowed
e: err != 1 & 3
// z: err == err // TODO: should infer to be true?
f: ({a:        1} & {a: 2}) == _|_
g: ({a:        1} & {b: 2}) == _|_
h: _|_ == ({a: 1} & {a: 2})
i: _|_ == ({a: 1} & {b: 2})

err: 1 & 2
-- out/def --
a:   true
b:   _|_ // conflicting values 1 and 2
err: _|_ // conflicting values 1 and 2
c:   true
d:   false
e:   _|_ // conflicting values 1 and 2
// z: err == err // TODO: should infer to be true?
f: true
g: false
h: true
i: false
-- out/legacy-debug --
<0>{a: true, b: _|_((1 & 2):conflicting values 1 and 2), err: _|_((1 & 2):conflicting values 1 and 2), c: true, d: false, e: _|_((1 & 2):conflicting values 1 and 2), f: true, g: false, h: true, i: false}
-- out/compile --
--- in.cue
{
  a: (_|_(explicit error (_|_ literal) in source) == _|_(explicit error (_|_ literal) in source))
  b: ((〈0;err〉 == 1) & 2)
  c: (〈0;err〉 == _|_(explicit error (_|_ literal) in source))
  d: (〈0;err〉 != _|_(explicit error (_|_ literal) in source))
  e: ((〈0;err〉 != 1) & 3)
  f: (({
    a: 1
  } & {
    a: 2
  }) == _|_(explicit error (_|_ literal) in source))
  g: (({
    a: 1
  } & {
    b: 2
  }) == _|_(explicit error (_|_ literal) in source))
  h: (_|_(explicit error (_|_ literal) in source) == ({
    a: 1
  } & {
    a: 2
  }))
  i: (_|_(explicit error (_|_ literal) in source) == ({
    a: 1
  } & {
    b: 2
  }))
  err: (1 & 2)
}
-- out/eval/stats --
Leaks:  0
Freed:  21
Reused: 16
Allocs: 5
Retain: 4

Unifications: 21
Conjuncts:    28
Disjuncts:    21
-- out/eval --
Errors:
err: conflicting values 2 and 1:
    ./in.cue:12:6
    ./in.cue:12:10

Result:
(_|_){
  // [eval]
  a: (bool){ true }
  b: (_|_){
    // [eval] err: conflicting values 2 and 1:
    //     ./in.cue:12:6
    //     ./in.cue:12:10
  }
  c: (bool){ true }
  d: (bool){ false }
  e: (_|_){
    // [eval] err: conflicting values 2 and 1:
    //     ./in.cue:12:6
    //     ./in.cue:12:10
  }
  f: (bool){ true }
  g: (bool){ false }
  h: (bool){ true }
  i: (bool){ false }
  err: (_|_){
    // [eval] err: conflicting values 2 and 1:
    //     ./in.cue:12:6
    //     ./in.cue:12:10
  }
}
