diff options
author | Dana N. Xu <na.xu@inria.fr> | 2010-12-07 20:10:55 +0000 |
---|---|---|
committer | Dana N. Xu <na.xu@inria.fr> | 2010-12-07 20:10:55 +0000 |
commit | 6bbbf63246117fb87c617989873faf036e55e289 (patch) | |
tree | 3ba7e617ffb85a5f02fdff25eab04b6a09d821fa | |
parent | be2b0939f82264348115af3dac555b1897ee6a73 (diff) | |
download | ocaml-6bbbf63246117fb87c617989873faf036e55e289.tar.gz |
fixed map_expression
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/contracts@10889 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | bytecomp/translcore.ml | 5 | ||||
-rw-r--r-- | typing/typedtree.ml | 8 | ||||
-rw-r--r-- | 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 } |