//ww:run-exit 0 // Run leg of the retired 929_tagged_memarg_run.c row mem56_inst_shape. package main; type inst_lit = rune; type inst_any = void; type inst_repeat = struct { id: size, origin: size, min: (void | size), max: (void | size) }; type inst = (inst_lit | inst_any | inst_repeat); fn is_consuming(a: inst) bool = { return a is inst_lit || a is inst_any; }; fn rep_id(a: inst) i64 = { match (a) { case let r: inst_repeat => { return r.origin: i64; }; case => { return -1; }; }; return -2; }; export fn main() i32 = { let a: inst = ('x': inst_lit); if (!is_consuming(a)) { return 1; }; let r: inst_repeat = inst_repeat { id = 7, origin = 9, min = (11: size), max = (1234: size) }; let b: inst = r; if (is_consuming(b)) { return 2; }; if (rep_id(b) != 9) { return 3; }; return 0; };