#name: slice
#evalPartial
-- in.cue --
a:  [2][0:0]
b:  [0][1:1]
e1: [][1:1]
e2: [0][-1:0]
e3: [0][1:0]
e4: [0][1:2]
e5: 4[1:2]
e6: [2]["":]
e7: [2][:"9"]
-- out/def --
a: []
b: []
e1: _|_ // slice bounds out of range
e2: _|_ // negative slice index
e3: _|_ // invalid slice index: 1 > 0
e4: _|_ // slice bounds out of range
e5: _|_ // cannot slice 4 (type int)
e6: _|_ // invalid slice index "" (type string)
e7: _|_ // invalid slice index "9" (type string)
-- out/legacy-debug --
<0>{a: [], b: [], e1: _|_(1:slice bounds out of range), e2: _|_([0]:negative slice index), e3: _|_([0]:invalid slice index: 1 > 0), e4: _|_(2:slice bounds out of range), e5: _|_(4:cannot slice 4 (type int)), e6: _|_("":invalid slice index "" (type string)), e7: _|_("9":invalid slice index "9" (type string))}
-- out/compile --
--- in.cue
{
  a: [
    2,
  ][0:0]
  b: [
    0,
  ][1:1]
  e1: [][1:1]
  e2: [
    0,
  ][-1:0]
  e3: [
    0,
  ][1:0]
  e4: [
    0,
  ][1:2]
  e5: 4[1:2]
  e6: [
    2,
  ]["":]
  e7: [
    2,
  ][:"9"]
}
-- out/eval/stats --
Leaks:  8
Freed:  10
Reused: 8
Allocs: 10
Retain: 8

Unifications: 18
Conjuncts:    18
Disjuncts:    18
-- out/eval --
Errors:
e1: index 1 out of range:
    ./in.cue:3:5
e2: cannot convert negative number to uint64:
    ./in.cue:4:5
e3: invalid slice index: 1 > 0:
    ./in.cue:5:5
e4: index 2 out of range:
    ./in.cue:6:5
e5: cannot slice 4 (type int):
    ./in.cue:7:5
e6: cannot use "" (type string) as type int in slice index:
    ./in.cue:8:5
    ./in.cue:8:9
e7: cannot use "9" (type string) as type int in slice index:
    ./in.cue:9:5
    ./in.cue:9:10

Result:
(_|_){
  // [eval]
  a: (#list){
  }
  b: (#list){
  }
  e1: (_|_){
    // [eval] e1: index 1 out of range:
    //     ./in.cue:3:5
  }
  e2: (_|_){
    // [eval] e2: cannot convert negative number to uint64:
    //     ./in.cue:4:5
  }
  e3: (_|_){
    // [eval] e3: invalid slice index: 1 > 0:
    //     ./in.cue:5:5
  }
  e4: (_|_){
    // [eval] e4: index 2 out of range:
    //     ./in.cue:6:5
  }
  e5: (_|_){
    // [eval] e5: cannot slice 4 (type int):
    //     ./in.cue:7:5
  }
  e6: (_|_){
    // [eval] e6: cannot use "" (type string) as type int in slice index:
    //     ./in.cue:8:5
    //     ./in.cue:8:9
  }
  e7: (_|_){
    // [eval] e7: cannot use "9" (type string) as type int in slice index:
    //     ./in.cue:9:5
    //     ./in.cue:9:10
  }
}
