//ww:run // migrated from test/wcc/929_match_4arm_cross_module_run.c: 5-arm scaling — arms 3 and 4 must each reach their body. package a; export type more = void; export type invalid = !void; export type done = void; export type stop = void; export fn next(k: i32) (rune | done | more | invalid | stop) = { if (k == 0) { return 0x43u32: rune; }; if (k == 1) { let v: done; return v; }; if (k == 2) { let v: more; return v; }; if (k == 3) { let v: invalid; return v; }; let v: stop; return v; }; package b; import a; type done = void; fn next(k: i32) i32 = { match (a.next(k)) { case let r: rune => return 100i32 + (r: i32); case let dn: a.done => return 2; case let m: a.more => return 3; case let e: a.invalid => return 4; case let s: a.stop => return 5; }; }; export fn main() i32 = { if (next(0) != 167) { return 11; }; if (next(1) != 2) { return 12; }; if (next(2) != 3) { return 13; }; if (next(3) != 4) { return 14; }; if (next(4) != 5) { return 15; }; return 0; };