//ww:error "on an sret-class call result unwired" package main; type oops = !str; type nomem = !void; type wide = struct { xs: []u8, ys: []u8, n: i64 }; fn mk(b: []u8) (wide | oops | nomem) = { return wide { xs = b, ys = b, n = 1 }; }; fn go(b: []u8) (i64 | oops | nomem) = { let w: wide = mk(b)?; return w.n; }; export fn main() i32 = { let buf: [4]u8 = [1u8, 2u8, 3u8, 4u8]; match (go(buf[0:4])) { case let v: i64 => { if (v != 1) { return 1; }; }; case let e: oops => return 13; case nomem => return 14; }; return 0; };