mls2obc bug fix

y = (if then else) when c
ou bien
y = f() when c
ne compilait pas.
This commit is contained in:
Léonard Gérard 2011-11-28 00:45:45 +01:00
parent 5be7a6acc2
commit d5f72c278c
1 changed files with 4 additions and 1 deletions

View File

@ -434,10 +434,13 @@ let empty_call_context = None
[j] obj decs [j] obj decs
[s] the actions used in the step method. [s] the actions used in the step method.
[v] var decs *) [v] var decs *)
let rec translate_eq map call_context { Minils.eq_lhs = pat; Minils.eq_rhs = e } let rec translate_eq map call_context ({ Minils.eq_lhs = pat; Minils.eq_rhs = e } as eq)
(v, si, j, s) = (v, si, j, s) =
let { Minils.e_desc = desc; Minils.e_base_ck = ck; Minils.e_loc = loc } = e in let { Minils.e_desc = desc; Minils.e_base_ck = ck; Minils.e_loc = loc } = e in
match (pat, desc) with match (pat, desc) with
| pat, Minils.Ewhen (e,_,_) ->
translate_eq map call_context {eq with Minils.eq_rhs = e} (v, si, j, s)
(* TODO Efby and Eifthenelse should be dealt with in translate_act, no ? *)
| Minils.Evarpat n, Minils.Efby (opt_c, e) -> | Minils.Evarpat n, Minils.Efby (opt_c, e) ->
let x = var_from_name map n in let x = var_from_name map n in
let si = (match opt_c with let si = (match opt_c with