diff --git a/src/Finish.ml b/src/Finish.ml index 9bd6ff5..f07eeb6 100644 --- a/src/Finish.ml +++ b/src/Finish.ml @@ -230,7 +230,8 @@ let rec finish_term (t : S.term) : C.stmt = ) | S.IfZero (expr, tIf, tElse) -> T.IfElse ( - finish_value expr, + T.Op2(T.K.Eq, to_int @@ finish_value expr, + T.Constant(T.K.Int32, "0")), finish_term tIf, finish_term tElse) | S.Swi (v, bs) -> diff --git a/src/tests/simple_if.exp b/src/tests/simple_if.exp new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/src/tests/simple_if.exp @@ -0,0 +1 @@ +1 diff --git a/src/tests/simple_if.lambda b/src/tests/simple_if.lambda new file mode 100644 index 0000000..3727bf9 --- /dev/null +++ b/src/tests/simple_if.lambda @@ -0,0 +1 @@ +ifzero 42 then print 0 else print 1