Files
ww/test/wcc/data/r929_match_4arm_shadowed_reverse/case.ww

32 lines
958 B
Plaintext

//ww:run
package main;
// migrated from test/wcc/929_match_4arm_cross_module_run.c: reverse arm order — dispatch follows the callee's variant indices, not source order.
package a;
export type more = void;
export type invalid = !void;
export type done = void;
export fn next(k: i32) (rune | done | more | invalid) = {
if (k == 0) { return 0x46u32: rune; };
if (k == 1) { let v: done; return v; };
if (k == 2) { let v: more; return v; };
let v: invalid; return v;
};
package b;
import a;
type done = void;
fn next(k: i32) i32 = {
match (a.next(k)) {
case let e: a.invalid => return 4;
case let m: a.more => return 3;
case let dn: a.done => return 2;
case let r: rune => return 100i32 + (r: i32);
};
};
export fn main() i32 = {
if (next(0) != 170) { return 11; };
if (next(1) != 2) { return 12; };
if (next(2) != 3) { return 13; };
if (next(3) != 4) { return 14; };
return 0;
};