# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: range unification
#evalPartial
-- in.cue --
	// with concrete values
a1: >=1 & <=5 & 3
a2: >=1 & <=5 & 1
a3: >=1 & <=5 & 5
a4: >=1 & <=5 & 6
a5: >=1 & <=5 & 0

a6:  3 & >=1 & <=5
a7:  1 & >=1 & <=5
a8:  5 & >=1 & <=5
a9:  6 & >=1 & <=5
a10: 0 & >=1 & <=5

// with ranges
b1: >=1 & <=5 & >=1 & <=5
b2: >=1 & <=5 & >=1 & <=1
b3: >=1 & <=5 & >=5 & <=5
b4: >=1 & <=5 & >=2 & <=3
b5: >=1 & <=5 & >=3 & <=9
b6: >=1 & <=5 & >=5 & <=9
b7: >=1 & <=5 & >=6 & <=9

b8:  >=1 & <=5 & >=1 & <=5
b9:  >=1 & <=1 & >=1 & <=5
b10: >=5 & <=5 & >=1 & <=5
b11: >=2 & <=3 & >=1 & <=5
b12: >=3 & <=9 & >=1 & <=5
b13: >=5 & <=9 & >=1 & <=5
b14: >=6 & <=9 & >=1 & <=5

// ranges with more general types
c1: int & >=1 & <=5
c2: >=1 & <=5 & int
c3: string & >=1 & <=5
c4: >=1 & <=5 & string

// other types
s1: >="d" & <="z" & "e"
s2: >="d" & <="z" & "ee"

n1: number & >=1 & <=2
n2: int & >=1.1 & <=1.3
n3: >=1.0 & <=3.0 & 2
n4: >=0.0 & <=0.1 & 0.09999
n5: >=1 & <=5 & 2.5
-- out/def --
	// with concrete values
a1:  3
a2:  1
a3:  5
a4:  _|_ // invalid value 6 (out of bound <=5)
a5:  _|_ // invalid value 0 (out of bound >=1)
a6:  3
a7:  1
a8:  5
a9:  _|_ // invalid value 6 (out of bound <=5)
a10: _|_ // invalid value 0 (out of bound >=1)

// with ranges
b1:  >=1 & <=5
b2:  1
b3:  5
b4:  >=2 & <=3
b5:  >=3 & <=5
b6:  5
b7:  _|_ // conflicting bounds >=6 and <=5
b8:  >=1 & <=5
b9:  1
b10: 5
b11: >=2 & <=3
b12: >=3 & <=5
b13: 5
b14: _|_ // conflicting bounds >=6 and <=5

// ranges with more general types
c1: uint & >=1 & <=5
c2: uint & >=1 & <=5
c3: _|_ // conflicting values string and >=1 (mismatched types string and number)
c4: _|_ // conflicting values (>=1 & <=5) and string (mismatched types number and string)

// other types
s1: "e"
s2: "ee"
n1: >=1 & <=2
n2: _|_ // conflicting bounds int & >=1.1 and <=1.3
n3: 2
n4: 0.09999
n5: 2.5
-- out/legacy-debug --
<0>{a1: 3, a2: 1, a3: 5, a4: _|_((<=5 & 6):invalid value 6 (out of bound <=5)), a5: _|_((>=1 & 0):invalid value 0 (out of bound >=1)), a6: 3, a7: 1, a8: 5, a9: _|_((<=5 & 6):invalid value 6 (out of bound <=5)), a10: _|_((>=1 & 0):invalid value 0 (out of bound >=1)), b1: (>=1 & <=5), b2: 1, b3: 5, b4: (>=2 & <=3), b5: (>=3 & <=5), b6: 5, b7: _|_(conflicting bounds >=6 and <=5), b8: (>=1 & <=5), b9: 1, b10: 5, b11: (>=2 & <=3), b12: (>=3 & <=5), b13: 5, b14: _|_(conflicting bounds >=6 and <=5), c1: (int & >=1 & <=5), c2: (<=5 & int & >=1), c3: _|_((string & >=1):conflicting values string and >=1 (mismatched types string and number)), c4: _|_(((>=1 & <=5) & string):conflicting values (>=1 & <=5) and string (mismatched types number and string)), s1: "e", s2: "ee", n1: (>=1 & <=2), n2: _|_(conflicting bounds int & >=1.1 and <=1.3), n3: 2, n4: 0.09999, n5: 2.5}
-- out/compile --
--- in.cue
{
  a1: ((>=1 & <=5) & 3)
  a2: ((>=1 & <=5) & 1)
  a3: ((>=1 & <=5) & 5)
  a4: ((>=1 & <=5) & 6)
  a5: ((>=1 & <=5) & 0)
  a6: ((3 & >=1) & <=5)
  a7: ((1 & >=1) & <=5)
  a8: ((5 & >=1) & <=5)
  a9: ((6 & >=1) & <=5)
  a10: ((0 & >=1) & <=5)
  b1: (((>=1 & <=5) & >=1) & <=5)
  b2: (((>=1 & <=5) & >=1) & <=1)
  b3: (((>=1 & <=5) & >=5) & <=5)
  b4: (((>=1 & <=5) & >=2) & <=3)
  b5: (((>=1 & <=5) & >=3) & <=9)
  b6: (((>=1 & <=5) & >=5) & <=9)
  b7: (((>=1 & <=5) & >=6) & <=9)
  b8: (((>=1 & <=5) & >=1) & <=5)
  b9: (((>=1 & <=1) & >=1) & <=5)
  b10: (((>=5 & <=5) & >=1) & <=5)
  b11: (((>=2 & <=3) & >=1) & <=5)
  b12: (((>=3 & <=9) & >=1) & <=5)
  b13: (((>=5 & <=9) & >=1) & <=5)
  b14: (((>=6 & <=9) & >=1) & <=5)
  c1: ((int & >=1) & <=5)
  c2: ((>=1 & <=5) & int)
  c3: ((string & >=1) & <=5)
  c4: ((>=1 & <=5) & string)
  s1: ((>="d" & <="z") & "e")
  s2: ((>="d" & <="z") & "ee")
  n1: ((number & >=1) & <=2)
  n2: ((int & >=1.1) & <=1.3)
  n3: ((>=1.0 & <=3.0) & 2)
  n4: ((>=0.0 & <=0.1) & 0.09999)
  n5: ((>=1 & <=5) & 2.5)
}
-- out/eval --
Errors:
b14: incompatible bounds >=6 and <=5:
    ./in.cue:29:6
    ./in.cue:29:24
b7: incompatible bounds >=6 and <=5:
    ./in.cue:21:11
    ./in.cue:21:17
c3: conflicting values string and >=1 (mismatched types string and number):
    ./in.cue:34:5
    ./in.cue:34:14
c4: conflicting values <=5 and string (mismatched types number and string):
    ./in.cue:35:11
    ./in.cue:35:17
n2: incompatible bounds >=1.1 and <=1.3:
    ./in.cue:42:11
    ./in.cue:42:19
a4: invalid value 6 (out of bound <=5):
    ./in.cue:5:11
    ./in.cue:5:17
a5: invalid value 0 (out of bound >=1):
    ./in.cue:6:5
    ./in.cue:6:17
a9: invalid value 6 (out of bound <=5):
    ./in.cue:11:16
    ./in.cue:11:6
a10: invalid value 0 (out of bound >=1):
    ./in.cue:12:10
    ./in.cue:12:6

Result:
(_|_){
  // [eval]
  a1: (int){ 3 }
  a2: (int){ 1 }
  a3: (int){ 5 }
  a4: (_|_){
    // [eval] a4: invalid value 6 (out of bound <=5):
    //     ./in.cue:5:11
    //     ./in.cue:5:17
  }
  a5: (_|_){
    // [eval] a5: invalid value 0 (out of bound >=1):
    //     ./in.cue:6:5
    //     ./in.cue:6:17
  }
  a6: (int){ 3 }
  a7: (int){ 1 }
  a8: (int){ 5 }
  a9: (_|_){
    // [eval] a9: invalid value 6 (out of bound <=5):
    //     ./in.cue:11:16
    //     ./in.cue:11:6
  }
  a10: (_|_){
    // [eval] a10: invalid value 0 (out of bound >=1):
    //     ./in.cue:12:10
    //     ./in.cue:12:6
  }
  b1: (number){ &(>=1, <=5) }
  b2: (number){ 1 }
  b3: (number){ 5 }
  b4: (number){ &(>=2, <=3) }
  b5: (number){ &(>=3, <=5) }
  b6: (number){ 5 }
  b7: (_|_){
    // [eval] b7: incompatible bounds >=6 and <=5:
    //     ./in.cue:21:11
    //     ./in.cue:21:17
  }
  b8: (number){ &(>=1, <=5) }
  b9: (number){ 1 }
  b10: (number){ 5 }
  b11: (number){ &(>=2, <=3) }
  b12: (number){ &(>=3, <=5) }
  b13: (number){ 5 }
  b14: (_|_){
    // [eval] b14: incompatible bounds >=6 and <=5:
    //     ./in.cue:29:6
    //     ./in.cue:29:24
  }
  c1: (int){ &(>=1, <=5, int) }
  c2: (int){ &(>=1, <=5, int) }
  c3: (_|_){
    // [eval] c3: conflicting values string and >=1 (mismatched types string and number):
    //     ./in.cue:34:5
    //     ./in.cue:34:14
  }
  c4: (_|_){
    // [eval] c4: conflicting values <=5 and string (mismatched types number and string):
    //     ./in.cue:35:11
    //     ./in.cue:35:17
  }
  s1: (string){ "e" }
  s2: (string){ "ee" }
  n1: (number){ &(>=1, <=2) }
  n2: (_|_){
    // [eval] n2: incompatible bounds >=1.1 and <=1.3:
    //     ./in.cue:42:11
    //     ./in.cue:42:19
  }
  n3: (int){ 2 }
  n4: (float){ 0.09999 }
  n5: (float){ 2.5 }
}
