v0.11.117.19+179

This commit is contained in:
Xavier Clerc 2018-08-13 10:25:18 +01:00
parent 1c3bd075d7
commit bdb7fe397e
2 changed files with 13 additions and 1 deletions

View File

@ -109,7 +109,19 @@ let expand ~loc:_ ~path:_ ~arg:modul extension_name expr =
| Pexp_let (Nonrecursive, bindings, expr) ->
let bindings =
List.map bindings ~f:(fun vb ->
let pvb_pat =
(* Temporary hack tentatively detecting that the parser
has expanded `let x : t = e` into `let x : t = (e : t)`.
For reference, here is the relevant part of the parser:
https://github.com/ocaml/ocaml/blob/4.07/parsing/parser.mly#L1628 *)
match vb.pvb_pat.ppat_desc, vb.pvb_expr.pexp_desc with
| Ppat_constraint (p, { ptyp_desc = Ptyp_poly ([], t1); _ }),
Pexp_constraint (_, t2) when phys_equal t1 t2 -> p
| _ -> vb.pvb_pat
in
{ vb with
pvb_pat;
pvb_expr = maybe_open extension_name ~to_open:(open_on_rhs ~modul) vb.pvb_expr;
})
in

View File

@ -41,7 +41,7 @@ module Monad_example = struct
return (x + y + (u * v))
let _mg a : _ X.t =
let%map x = a in
let%map x : int X.t = a in
x + 1
let _mg' a b c : _ X.t =