summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rewrites.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rewrites.ml b/src/rewrites.ml
index 016bd7d9..7825c153 100644
--- a/src/rewrites.ml
+++ b/src/rewrites.ml
@@ -1379,7 +1379,11 @@ let rewrite_defs_remove_numeral_pats =
fold_pat { (compute_pat_alg None compose_guard_opt) with p_lit = p_lit } in
let pat_aux (pexp_aux, a) =
let pat,guard,exp,a = destruct_pexp (Pat_aux (pexp_aux, a)) in
- let guard',pat = guard_pat pat in
+ let guard',pat = match guard_pat pat with
+ | Some g, pat ->
+ let pat, env = bind_pat_no_guard (env_of exp) (strip_pat pat) (pat_typ_of pat) in
+ Some (check_exp env (strip_exp g) (typ_of g)), pat
+ | None, pat -> None, pat in
match compose_guard_opt guard guard' with
| Some g -> Pat_aux (Pat_when (pat, g, exp), a)
| None -> Pat_aux (Pat_exp (pat, exp), a) in