//ww:run-exit 0 // Run leg of the retired 929_tagged_memarg_run.c row mem56_twomem. package main; type t_lit = rune; type t_any = void; type t_rep = struct { id: size, origin: size, m0: size, m1: size, m2: size, m3: size }; type t_u = (t_lit | t_any | t_rep); type w_rep = struct { id: size, origin: size, m0: size, m1: size, m2: size, m3: size, m4: size }; type w_u = (t_lit | w_rep); fn both(a: t_u, b: w_u) i64 = { let x: i64 = 0; match (a) { case let r: t_rep => { x = r.m3: i64; }; case => { return 91; }; }; match (b) { case let r: w_rep => { return x + (r.m4: i64); }; case => { return 92; }; }; return 99; }; export fn main() i32 = { let r: t_rep = t_rep { id = 7, origin = 9, m0 = 10, m1 = 11, m2 = 12, m3 = 1234 }; let a: t_u = r; let w: w_rep = w_rep { id = 1, origin = 2, m0 = 3, m1 = 4, m2 = 5, m3 = 6, m4 = 2 }; let b: w_u = w; if (both(a, b) != 1236) { return 1; }; return 0; };