Add missing case for ifthenelse

This commit is contained in:
Cédric Pasteur 2010-07-13 14:42:46 +02:00
parent ee767064b1
commit dab569d8ad
1 changed files with 12 additions and 2 deletions

View File

@ -163,6 +163,16 @@ let rec translate_eq map { Minils.eq_lhs = pat; Minils.eq_rhs = e }
(Minils.mk_equation pat e))
p_list act_list (m, si, j, s)
| pat, Minils.Eapp({ Minils.a_op = Minils.Eifthenelse }, [e1;e2;e3], _) ->
let cond = translate map (m, si, j, s) e1 in
let m, si, j, true_act = translate_eq map
(Minils.mk_equation pat e2) (m, si, j, s) in
let m, si, j, false_act = translate_eq map
(Minils.mk_equation pat e3) (m, si, j, s) in
let action = Acase (cond, [Name "true", true_act;
Name "false", false_act]) in
m, si, j, (control map ck action) :: s
| Minils.Evarpat x,
Minils.Eapp ({ Minils.a_op = Minils.Efield_update;
Minils.a_params = [{ se_desc = Sconstructor f }] },