raw: true
-- in.cue --
{a: *"foo" | *"bar" | *string | int, b: a[2:3]}
-- out/def --
a: *string | int
b: _|_ // cannot slice a (type string)
-- out/compile --
--- in.cue
{
  {
    a: (*"foo"|*"bar"|*string|int)
    b: 〈0;a〉[2:3]
  }
}
-- out/eval/stats --
Leaks:  0
Freed:  7
Reused: 1
Allocs: 6
Retain: 0

Unifications: 3
Conjuncts:    12
Disjuncts:    7
-- out/eval --
(struct){
  a: ((int|string)){ |(*(string){ "foo" }, *(string){ "bar" }, *(string){ string }, (int){ int }) }
  b: (_|_){
    // [incomplete] b: non-concrete slice subject a:
    //     ./in.cue:1:41
  }
}
