#name: comparison
#evalPartial
-- in.cue --
lss: 1 < 2
leq: 1 <= 1.0
leq: 2.0 <= 3
eql: 1 == 1.0
neq: 1.0 == 1
gtr: !(2 > 3)
geq: 2.0 >= 2
seq: "a"+"b" == "ab"
err: 2 == "s"
-- out/def --
lss: true
leq: true
eql: true
neq: true
gtr: true
geq: true
seq: true
err: _|_ // invalid operation 2 == "s" (mismatched types int and string)
-- out/legacy-debug --
<0>{lss: true, leq: true, eql: true, neq: true, gtr: true, geq: true, seq: true, err: _|_((2 == "s"):invalid operation 2 == "s" (mismatched types int and string))}
-- out/compile --
--- in.cue
{
  lss: (1 < 2)
  leq: (1 <= 1.0)
  leq: (2.0 <= 3)
  eql: (1 == 1.0)
  neq: (1.0 == 1)
  gtr: !(2 > 3)
  geq: (2.0 >= 2)
  seq: (("a" + "b") == "ab")
  err: (2 == "s")
}
-- out/eval/stats --
Leaks:  0
Freed:  9
Reused: 7
Allocs: 2
Retain: 0

Unifications: 9
Conjuncts:    10
Disjuncts:    9
-- out/eval --
Errors:
err: invalid operands 2 and "s" to '==' (type int and string):
    ./in.cue:9:6
    ./in.cue:9:11

Result:
(_|_){
  // [eval]
  lss: (bool){ true }
  leq: (bool){ true }
  eql: (bool){ true }
  neq: (bool){ true }
  gtr: (bool){ true }
  geq: (bool){ true }
  seq: (bool){ true }
  err: (_|_){
    // [eval] err: invalid operands 2 and "s" to '==' (type int and string):
    //     ./in.cue:9:6
    //     ./in.cue:9:11
  }
}
