# 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 >=1 and string (mismatched types number and string):
    ./in.cue:35:5
    ./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 >=1 and string (mismatched types number and string):
    //     ./in.cue:35:5
    //     ./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 }
}
