From 70950f920565341dc1ab3e77671ae55bac980384 Mon Sep 17 00:00:00 2001 From: Andrei Paskevich <andrei@lri.fr> Date: Sat, 17 Jan 2015 00:25:37 +0100 Subject: [PATCH] Expr: print correctly the recursive definitions --- src/mlw/expr.ml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mlw/expr.ml b/src/mlw/expr.ml index 678b21d158..86559ecadf 100644 --- a/src/mlw/expr.ml +++ b/src/mlw/expr.ml @@ -987,6 +987,8 @@ let ambig_cty c = let sres = ity_freeze isb_empty c.cty_result in not (Mtv.set_submap sres.isb_tv sarg.isb_tv) +let ht_ps = Hps.create 7 (* fun_rsym -> fun_sym *) + let rec print_expr fmt e = print_lexpr 0 fmt e and print_lexpr pri fmt e = @@ -1026,7 +1028,7 @@ and print_app pri s fmt vl = match extract_op s, vl with and print_enode pri fmt e = match e.e_node with | Evar v -> print_pv fmt v - | Esym s -> print_ps fmt s + | Esym s -> print_ps fmt (Hps.find_def ht_ps s s) | Efun e1 -> let c = cty_of_expr e in fprintf fmt "@[<hov 2>fun%a ->@\n%a@]" @@ -1050,9 +1052,9 @@ and print_enode pri fmt e = match e.e_node with | Eapp ({e_node = Esym s},vl,{cty_args = []; cty_result = ity}) when ambig_cty s.ps_cty -> fprintf fmt (protect_on (pri > 0) "%a:%a") - (print_app 5 s) vl print_ity ity + (print_app 5 (Hps.find_def ht_ps s s)) vl print_ity ity | Eapp ({e_node = Esym s},vl,_) -> - print_app pri s fmt vl + print_app pri (Hps.find_def ht_ps s s) fmt vl | Eapp ({e_vty = VtyC c} as e,vl,{cty_args = []; cty_result = ity}) when ambig_cty c -> fprintf fmt (protect_on (pri > 0) "@[<hov 1>%a@ %a: %a@]") @@ -1149,7 +1151,9 @@ and print_let_defn fmt = function (print_lexpr 0 (*4*)) e and print_rec_defn fmt {rec_defn = fdl} = - print_list_next Pp.newline print_rec_fun fmt fdl + List.iter (fun fd -> Hps.replace ht_ps fd.fun_rsym fd.fun_sym) fdl; + print_list_next Pp.newline print_rec_fun fmt fdl; + List.iter (fun fd -> Hps.remove ht_ps fd.fun_rsym) fdl and print_rec_fun fst fmt fd = let e = match fd.fun_expr.e_node with -- GitLab