-- 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/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)
}
