type foo = {a: int, b: uint};
tag bar { u(~foo); w(int); }
fn main() {
assert (alt u(~{a: 10, b: 40u}) {
u(~{a: a, b: b}) { a + (b as int) }
_ { 66 }
} == 50);
}