//ww:run-exit 30 package main; type pair = struct { a: i64, b: i64 }; fn mk(x: i64) (pair | void) = { let p: pair; p.a = x; p.b = x + 1; return p; }; fn pick(r: (str | pair | void)) i32 = { match (r) { case let s: str => return 10; case let p: pair => { if (p.a != 5) { return 4; }; if (p.b != 6) { return 5; }; return 30; }; case void => return 20; }; }; export fn main() i32 = { return pick(mk(5)); };