#source fun add(a: int, b: int) { return a + b; } #bytecode PUSHFUN fun, 2; ASS "add"; POP 1; JUMP end; fun: PUSHTYP; PUSHVAR "int"; PUSHTYP; PUSHTYPTYP; EQL; JUMPIFNOTANDPOP arg1_annot0_not_type; EQL; JUMPIFANDPOP arg1_ok; ERROR "Bad type for argument 1"; arg1_annot0_not_type: ERROR "Argument 1 type annotation 0 is not a type"; arg1_ok: ASS "b"; POP 1; PUSHTYP; PUSHVAR "int"; PUSHTYP; PUSHTYPTYP; EQL; JUMPIFNOTANDPOP arg0_annot0_not_type; EQL; JUMPIFANDPOP arg0_ok; ERROR "Bad type for argument 0"; arg0_annot0_not_type: ERROR "Argument 0 type annotation 0 is not a type"; arg0_ok: ASS "a"; POP 1; PUSHVAR "a"; PUSHVAR "b"; ADD; RETURN 1; RETURN 0; end: RETURN 0;