diff options
Diffstat (limited to 'typing')
| -rw-r--r-- | typing/typecore.ml | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/typing/typecore.ml b/typing/typecore.ml index fc138d64e8..6c0da3b20b 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -1875,14 +1875,17 @@ and type_expect_ ?in_function env sexp ty_expected = | Pexp_bind(spat_sexp_list, sbody) -> let (pat_exp, new_env, unpacks) = type_let env Default spat_sexp_list None true in - let pat_exp = List.hd pat_exp in - let exp = type_function loc env ty_expected in_function "" spat_sexp_list in - let body = + let body0 = type_expect new_env (wrap_unpacks sbody unpacks) ty_expected in + let body = match body0.exp_type.desc with + | Tarrow (_,_,body,_) -> body + | _ -> assert false + in + let pat_exp0 = List.hd pat_exp in re { - exp_desc = Texp_bind((fst pat_exp, exp), body); + exp_desc = Texp_bind(pat_exp0, body0); exp_loc = loc; exp_extra = []; - exp_type = body.exp_type; + exp_type = body; exp_env = env } | Pexp_function (l, Some default, [spat, sbody]) -> let default_loc = default.pexp_loc in |
