summaryrefslogtreecommitdiff
path: root/src/ast_util.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast_util.ml')
-rw-r--r--src/ast_util.ml10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ast_util.ml b/src/ast_util.ml
index 9e2b7a2d..fc59fcf2 100644
--- a/src/ast_util.ml
+++ b/src/ast_util.ml
@@ -93,7 +93,10 @@ and map_opt_default_annot_aux f = function
| Def_val_dec exp -> Def_val_dec (map_exp_annot f exp)
and map_fexps_annot f (FES_aux (FES_Fexps (fexps, b), annot)) = FES_aux (FES_Fexps (List.map (map_fexp_annot f) fexps, b), f annot)
and map_fexp_annot f (FE_aux (FE_Fexp (id, exp), annot)) = FE_aux (FE_Fexp (id, map_exp_annot f exp), f annot)
-and map_pexp_annot f (Pat_aux (Pat_exp (pat, exp), annot)) = Pat_aux (Pat_exp (map_pat_annot f pat, map_exp_annot f exp), f annot)
+and map_pexp_annot f (Pat_aux (pexp, annot)) = Pat_aux (map_pexp_annot_aux f pexp, f annot)
+and map_pexp_annot_aux f = function
+ | Pat_exp (pat, exp) -> Pat_exp (map_pat_annot f pat, map_exp_annot f exp)
+ | Pat_when (pat, guard, exp) -> Pat_when (map_pat_annot f pat, map_exp_annot f guard, map_exp_annot f exp)
and map_pat_annot f (P_aux (pat, annot)) = P_aux (map_pat_annot_aux f pat, f annot)
and map_pat_annot_aux f = function
| P_lit lit -> P_lit lit
@@ -278,7 +281,10 @@ let rec string_of_exp (E_aux (exp, _)) =
^ ") { "
^ string_of_exp body
| _ -> "INTERNAL"
-and string_of_pexp (Pat_aux (Pat_exp (pat, exp), _)) = string_of_pat pat ^ " -> " ^ string_of_exp exp
+and string_of_pexp (Pat_aux (pexp, _)) =
+ match pexp with
+ | Pat_exp (pat, exp) -> string_of_pat pat ^ " -> " ^ string_of_exp exp
+ | Pat_when (pat, guard, exp) -> string_of_pat pat ^ " when " ^ string_of_exp guard ^ " -> " ^ string_of_exp exp
and string_of_pat (P_aux (pat, l)) =
match pat with
| P_lit lit -> string_of_lit lit