28 lines
763 B
Plaintext
28 lines
763 B
Plaintext
//ww:run
|
|
package main;
|
|
// migrated from test/wcc/929_match_4arm_cross_module_run.c: 3-arm boundary — arm 2 must reach its body under the shadowed callee.
|
|
package a;
|
|
export type more = void;
|
|
export type done = void;
|
|
export fn next(k: i32) (rune | done | more) = {
|
|
if (k == 0) { return 0x42u32: rune; };
|
|
if (k == 1) { let v: done; return v; };
|
|
let v: more; return v;
|
|
};
|
|
package b;
|
|
import a;
|
|
type done = void;
|
|
fn next(k: i32) i32 = {
|
|
match (a.next(k)) {
|
|
case let r: rune => return 1i32 + (r: i32);
|
|
case let dn: a.done => return 2;
|
|
case let m: a.more => return 3;
|
|
};
|
|
};
|
|
export fn main() i32 = {
|
|
if (next(0) != 67) { return 11; };
|
|
if (next(1) != 2) { return 12; };
|
|
if (next(2) != 3) { return 13; };
|
|
return 0;
|
|
};
|