//ww:error "cannot borrow as a slice here" // #13 carrier: an array LITERAL returned into a tagged-union SLICE success // variant ([]i32 | e) has no outliving backing (the maker's frame dies) — the // .ptr would dangle, the same #31/#33 no-backing reject as a bare-slice return. // Both stages must REJECT: the borrow gate now sees THROUGH the union to its // []i32 success variant (the silent all-zeros-header miscompile gap). Full // non-let support (an outliving backing) is #33. package main; type e = !i32; fn mk() ([]i32 | e) = { return [10i32, 20i32, 30i32]; }; export fn main() i32 = { let s: []i32 = mk()!; return s[0]; };