# 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|func|list|struct|number)):
    ./in.cue:40:5
    ./in.cue:40:12
e2: conflicting values !=null and null (mismatched types (bool|string|bytes|func|list|struct|number) and null):
    ./in.cue:41:5
    ./in.cue:41:14
e5: incompatible bounds >1 and <0:
    ./in.cue:44:5
    ./in.cue:44:10
e6: incompatible bounds >11 and <11:
    ./in.cue:45:5
    ./in.cue:45:11
e7: incompatible bounds >=11 and <11:
    ./in.cue:46:5
    ./in.cue:46:12
e8: incompatible bounds >11 and <=11:
    ./in.cue:47:5
    ./in.cue:47:11
e9: conflicting values >"a" and <1 (mismatched types string and number):
    ./in.cue:48:5
    ./in.cue:48:12
e3: invalid value 1 (out of bound >1):
    ./in.cue:42:5
    ./in.cue:42:10
e4: invalid value 0 (out of bound <0):
    ./in.cue:43:5
    ./in.cue:43:10

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 }
  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|func|list|struct|number)):
    //     ./in.cue:40:5
    //     ./in.cue:40:12
  }
  e2: (_|_){
    // [eval] e2: conflicting values !=null and null (mismatched types (bool|string|bytes|func|list|struct|number) and null):
    //     ./in.cue:41:5
    //     ./in.cue:41:14
  }
  e3: (_|_){
    // [eval] e3: invalid value 1 (out of bound >1):
    //     ./in.cue:42:5
    //     ./in.cue:42:10
  }
  e4: (_|_){
    // [eval] e4: invalid value 0 (out of bound <0):
    //     ./in.cue:43:5
    //     ./in.cue:43:10
  }
  e5: (_|_){
    // [eval] e5: incompatible bounds >1 and <0:
    //     ./in.cue:44:5
    //     ./in.cue:44:10
  }
  e6: (_|_){
    // [eval] e6: incompatible bounds >11 and <11:
    //     ./in.cue:45:5
    //     ./in.cue:45:11
  }
  e7: (_|_){
    // [eval] e7: incompatible bounds >=11 and <11:
    //     ./in.cue:46:5
    //     ./in.cue:46:12
  }
  e8: (_|_){
    // [eval] e8: incompatible bounds >11 and <=11:
    //     ./in.cue:47:5
    //     ./in.cue:47:11
  }
  e9: (_|_){
    // [eval] e9: conflicting values >"a" and <1 (mismatched types string and number):
    //     ./in.cue:48:5
    //     ./in.cue:48:12
  }
}
