# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: bounds
#evalPartial
-- in.cue --
i1: >1 & 5
i2: (>=0 & <=10) & 5
i3: !=null & []
i4: !=2 & !=4

s1: >=0 & <=10 & !=1  // no simplification
s2: >=0 & <=10 & !=11 // >=0 & <=10
s3: >5 & !=5          // >5
s4: <10 & !=10        // <10
s5: !=2 & !=2

// TODO: could change inequality
s6: !=2 & >=2
s7: >=2 & !=2

s8: !=5 & >5

s10: >=0 & <=10 & <12 & >1 // >1  & <=10
s11: >0 & >=0 & <=12 & <12 // >0  & <12

s20: >=10 & <=10 // 10

s22:  >5 & <=6         // no simplification
s22a: >5 & (<=6 & int) // 6
s22b: (int & >5) & <=6 // 6
s22c: >=5 & (<6 & int) // 5
s22d: (int & >=5) & <6 // 5
s22e: (>=5 & <6) & int // 5
s22f: int & (>=5 & <6) // 5

s23:  >0 & <2         // no simplification
s23a: (>0 & <2) & int // int & 1
s23b: int & (>0 & <2) // int & 1
s23c: (int & >0) & <2 // int & 1
s23d: >0 & (int & <2) // int & 1
s23e: >0.0 & <2.0     // no simplification

s30: >0 & int

e1: null & !=null
e2: !=null & null
e3: >1 & 1
e4: <0 & 0
e5: >1 & <0
e6: >11 & <11
e7: >=11 & <11
e8: >11 & <=11
e9: >"a" & <1
-- out/def --
i1: 5
i2: 5
i3: []
i4: !=2 & !=4
s1: >=0 & <=10 & !=1
s2: >=0 & <=10
s3: >5
s4: <10
s5: !=2

// TODO: could change inequality
s6:   !=2
s7:   !=2
s8:   >5
s10:  >1 & <=10
s11:  >0 & <12
s20:  10
s22:  >5 & <=6
s22a: 6
s22b: 6
s22c: 5
s22d: 5
s22e: 5
s22f: 5
s23:  >0 & <2
s23a: 1
s23b: 1
s23c: 1
s23d: 1
s23e: >0.0 & <2.0
s30:  >0
e1:   _|_ // invalid value null (excluded by !=null)
e2:   _|_ // invalid value null (excluded by !=null)
e3:   _|_ // invalid value 1 (out of bound >1)
e4:   _|_ // invalid value 0 (out of bound <0)
e5:   _|_ // conflicting bounds >1 and <0
e6:   _|_ // conflicting bounds >11 and <11
e7:   _|_ // conflicting bounds >=11 and <11
e8:   _|_ // conflicting bounds >11 and <=11
e9:   _|_ // conflicting values >"a" and <1 (mismatched types string and number)
-- out/legacy-debug --
<0>{i1: 5, i2: 5, i3: [], i4: (!=2 & !=4), s1: (>=0 & <=10 & !=1), s2: (>=0 & <=10), s3: >5, s4: <10, s5: !=2, s6: (!=2 & >=2), s7: (>=2 & !=2), s8: >5, s10: (<=10 & >1), s11: (>0 & <12), s20: 10, s22: (>5 & <=6), s22a: 6, s22b: 6, s22c: 5, s22d: 5, s22e: 5, s22f: 5, s23: (>0 & <2), s23a: 1, s23b: 1, s23c: 1, s23d: 1, s23e: (>0.0 & <2.0), s30: int & >0, e1: _|_((!=null & null):invalid value null (excluded by !=null)), e2: _|_((!=null & null):invalid value null (excluded by !=null)), e3: _|_((>1 & 1):invalid value 1 (out of bound >1)), e4: _|_((<0 & 0):invalid value 0 (out of bound <0)), e5: _|_(conflicting bounds >1 and <0), e6: _|_(conflicting bounds >11 and <11), e7: _|_(conflicting bounds >=11 and <11), e8: _|_(conflicting bounds >11 and <=11), e9: _|_((>"a" & <1):conflicting values >"a" and <1 (mismatched types string and number))}
-- out/compile --
--- in.cue
{
  i1: (>1 & 5)
  i2: ((>=0 & <=10) & 5)
  i3: (!=null & [])
  i4: (!=2 & !=4)
  s1: ((>=0 & <=10) & !=1)
  s2: ((>=0 & <=10) & !=11)
  s3: (>5 & !=5)
  s4: (<10 & !=10)
  s5: (!=2 & !=2)
  s6: (!=2 & >=2)
  s7: (>=2 & !=2)
  s8: (!=5 & >5)
  s10: (((>=0 & <=10) & <12) & >1)
  s11: (((>0 & >=0) & <=12) & <12)
  s20: (>=10 & <=10)
  s22: (>5 & <=6)
  s22a: (>5 & (<=6 & int))
  s22b: ((int & >5) & <=6)
  s22c: (>=5 & (<6 & int))
  s22d: ((int & >=5) & <6)
  s22e: ((>=5 & <6) & int)
  s22f: (int & (>=5 & <6))
  s23: (>0 & <2)
  s23a: ((>0 & <2) & int)
  s23b: (int & (>0 & <2))
  s23c: ((int & >0) & <2)
  s23d: (>0 & (int & <2))
  s23e: (>0.0 & <2.0)
  s30: (>0 & int)
  e1: (null & !=null)
  e2: (!=null & null)
  e3: (>1 & 1)
  e4: (<0 & 0)
  e5: (>1 & <0)
  e6: (>11 & <11)
  e7: (>=11 & <11)
  e8: (>11 & <=11)
  e9: (>"a" & <1)
}
-- out/eval --
Errors:
e1: conflicting values null and !=null (mismatched types null and (bool|string|bytes|list|struct|number))
e2: conflicting values !=null and null (mismatched types (bool|string|bytes|list|struct|number) and null)
e5: incompatible bounds >1 and <0
e6: incompatible bounds >11 and <11
e7: incompatible bounds >=11 and <11
e8: incompatible bounds >11 and <=11
e9: conflicting values >"a" and <1 (mismatched types string and number)
e3: invalid value 1 (out of bound >1):
    ./in.cue:42:5
e4: invalid value 0 (out of bound <0):
    ./in.cue:43:5

Result:
(_|_){
  // [eval]
  i1: (int){ 5 }
  i2: (int){ 5 }
  i3: (#list){
  }
  i4: (number){ &(!=2, !=4) }
  s1: (number){ &(>=0, <=10, !=1) }
  s2: (number){ &(>=0, <=10) }
  s3: (number){ >5 }
  s4: (number){ <10 }
  s5: (number){ &(!=2, !=2) }
  s6: (number){ &(>=2, !=2) }
  s7: (number){ &(>=2, !=2) }
  s8: (number){ >5 }
  s10: (number){ &(>1, <=10) }
  s11: (number){ &(>0, <12) }
  s20: (number){ 10 }
  s22: (number){ &(>5, <=6) }
  s22a: (int){ 6 }
  s22b: (int){ 6 }
  s22c: (int){ 5 }
  s22d: (int){ 5 }
  s22e: (int){ 5 }
  s22f: (int){ 5 }
  s23: (number){ &(>0, <2) }
  s23a: (int){ 1 }
  s23b: (int){ 1 }
  s23c: (int){ 1 }
  s23d: (int){ 1 }
  s23e: (number){ &(>0.0, <2.0) }
  s30: (int){ &(>0, int) }
  e1: (_|_){
    // [eval] e1: conflicting values null and !=null (mismatched types null and (bool|string|bytes|list|struct|number))
  }
  e2: (_|_){
    // [eval] e2: conflicting values !=null and null (mismatched types (bool|string|bytes|list|struct|number) and null)
  }
  e3: (_|_){
    // [eval] e3: invalid value 1 (out of bound >1):
    //     ./in.cue:42:5
  }
  e4: (_|_){
    // [eval] e4: invalid value 0 (out of bound <0):
    //     ./in.cue:43:5
  }
  e5: (_|_){
    // [eval] e5: incompatible bounds >1 and <0
  }
  e6: (_|_){
    // [eval] e6: incompatible bounds >11 and <11
  }
  e7: (_|_){
    // [eval] e7: incompatible bounds >=11 and <11
  }
  e8: (_|_){
    // [eval] e8: incompatible bounds >11 and <=11
  }
  e9: (_|_){
    // [eval] e9: conflicting values >"a" and <1 (mismatched types string and number)
  }
}
