method expr =
fun f e ->
let () = o#node f e Ast.loc_of_expr
in
match e with
| Ast.ExAss (_, e1, e2) ->
pp f "@[<2>%a@ :=@ %a@]" o#dot_expr e1 o#expr e2
| Ast.ExFun (_, (Ast.McArr (_, p, (Ast.ExNil _), e)))
when Ast.is_irrefut_patt p ->
pp f "@[<2>fun@ %a@]" o#patt_expr_fun_args
((`patt p), e)
| Ast.ExFUN (_, i, e) ->
pp f "@[<2>fun@ %a@]" o#patt_expr_fun_args
((`newtype i), e)
| Ast.ExFun (_, a) ->
pp f "@[<hv0>fun%a@]" o#match_case a
| Ast.ExAsf _ -> pp f "@[<2>assert@ False@]"
| e -> super#expr f e