From 7c6e2e390e37f45c69d17444357f19da0b89189c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Fri, 16 Feb 2018 00:52:07 +0100 Subject: [PATCH] Fix C code production, add ifzero basic test --- src/Finish.ml | 3 ++- src/tests/simple_if.exp | 1 + src/tests/simple_if.lambda | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 src/tests/simple_if.exp create mode 100644 src/tests/simple_if.lambda 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