//ww:run-exit 10 // #13 over-reach guard: a REAL slice returned into the same tagged-union // success variant ([]i32 | e) has a live backing (the caller's array `a`), so // both stages must still ACCEPT and build the correct header (tag=0, byte-id). // Discriminates the array-LITERAL reject (sibling carrier) from a blanket // union-slice-return reject — proves the #13 fix is surgical. Returns s[0]=10. package main; type e = !i32; fn mk(src: []i32) ([]i32 | e) = { return src; }; export fn main() i32 = { let a: [3]i32 = [10i32, 20i32, 30i32]; let s: []i32 = mk(a)!; return s[0]; };