From 6bbbf63246117fb87c617989873faf036e55e289 Mon Sep 17 00:00:00 2001 From: "Dana N. Xu" Date: Tue, 7 Dec 2010 20:10:55 +0000 Subject: fixed map_expression git-svn-id: http://caml.inria.fr/svn/ocaml/branches/contracts@10889 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- bytecomp/translcore.ml | 5 +++-- typing/typedtree.ml | 8 +++++--- typing/types.ml | 6 ++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/bytecomp/translcore.ml b/bytecomp/translcore.ml index 986a33d866..94f1f7ff82 100644 --- a/bytecomp/translcore.ml +++ b/bytecomp/translcore.ml @@ -964,8 +964,9 @@ and subst_contract v e cntr = (* deep_transl_contract takes e and expands all ei |><| ci in e *) and deep_transl_contract expr = - Typedtree.map_expression (fun ei -> match ei.exp_desc with - | Texp_contract (c, e, r1, r2) -> transl_contract c e r1 r2 + Typedtree.map_expression (fun ei -> match ei.exp_desc with + | Texp_contract (c, e, r1, r2) -> + transl_contract c e r1 r2 | _ -> ei) expr diff --git a/typing/typedtree.ml b/typing/typedtree.ml index 5ac1cee2a3..3f265bb00f 100644 --- a/typing/typedtree.ml +++ b/typing/typedtree.ml @@ -288,7 +288,7 @@ and map_expression f (expr:expression) = | Texp_let (rec_flag, pat_expr_list, expr1) -> Texp_let (rec_flag, List.map (fun (p, e) -> (p, map_expression f e)) pat_expr_list, - map_expression f expr1) + map_expression f expr1) | Texp_function (pat_expr_list, partial) -> Texp_function (List.map (fun (p, e) -> (p, map_expression f e)) pat_expr_list, partial) @@ -346,10 +346,12 @@ and map_expression f (expr:expression) = | Texp_lazy (expr1) -> Texp_lazy (map_expression f expr1) (* | Texp_object (class_str, class_sig, string_list) -> Texp_object (class_str, class_sig, string_list) *) - | others -> (f expr).exp_desc + | Texp_contract (c, e, r1, r2) -> + Texp_contract (c, map_expression f e, r1, r2) + | others -> others in let result_exp_desc = map_expression_aux f expr in - { expr with exp_desc = result_exp_desc } + f {expr with exp_desc = result_exp_desc } (* We want to convert expression to Types.expression *) diff --git a/typing/types.ml b/typing/types.ml index d60a8ae13c..98c225d726 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -657,8 +657,10 @@ and map_expression f (expr:expression) = | Texp_lazy (expr1) -> Texp_lazy (map_expression f expr1) (* | Texp_object (class_str, class_sig, string_list) -> Texp_object (class_str, class_sig, string_list) *) - | others -> (f expr).exp_desc + | Texp_contract (c, e, r1, r2) -> + Texp_contract (c, map_expression f e, r1, r2) + | others -> others in let result_exp_desc = map_expression_aux f expr in - { expr with exp_desc = result_exp_desc } + f { expr with exp_desc = result_exp_desc } -- cgit v1.2.1