type t1 = enum { True, False, Error }; node #pragma kcg expand #end mm(clock clk: t1; v: int when (clk match True)) returns(r: int) var lr: int; let lr = 0 -> pre r; r = merge(clk; v; lr when (clk match False); -1 when (clk match Error)); tel node test(i: int) returns (a, b, c: int; exit: bool) var clock clk: t1; let exit = i >= 30; clk = if i mod 5 = 0 then True else if i mod 9 = 8 then Error else False; a = mm(clk, i when (clk match True)); b = if clk = True then 1 else 0; c = if clk = Error then 1 else 0; tel