24 lines
656 B
Plaintext
24 lines
656 B
Plaintext
//ww:run-exit 42
|
|
package main;
|
|
// migrated from test/wcc/839_xmod_nominal_typeeqast.c: bare-spelled union variants matched via QUALIFIED case patterns (`case let x: e.myerr`) — cross-module nominal cover.
|
|
package e;
|
|
export type myerr = !i64;
|
|
export type res = (i64 | myerr);
|
|
export fn ok(v: i64) res = { return v; };
|
|
export fn bad() res = { return (-7: myerr); };
|
|
package main;
|
|
import e;
|
|
fn unwrap(r: e.res) i64 = {
|
|
match (r) {
|
|
case let n: i64 => return n;
|
|
case let x: e.myerr => return -1;
|
|
};
|
|
};
|
|
export fn main() i32 = {
|
|
let a = unwrap(e.ok(40));
|
|
let b = unwrap(e.bad());
|
|
if (a != 40) { return 11; };
|
|
if (b != -1) { return 12; };
|
|
return 42;
|
|
};
|