method binding =
fun f bi ->
let () = o#node f bi Ast.loc_of_binding
in
match bi with
| Ast.BiNil _ -> ()
| Ast.BiAnd (_, b1, b2) ->
(o#binding f b1; pp f o#andsep; o#binding f b2)
| Ast.BiEq (_, p, e) ->
let (pl, e) =
(match p with
| Ast.PaTyc (_, _, _) -> ([], e)
| _ -> expr_fun_args e)
in
(match (p, e) with
| (Ast.PaId (_, (Ast.IdLid (_, _))),
Ast.ExTyc (_, e, t)) ->
pp f "%a :@ %a =@ %a"
(list o#fun_binding "@ ")
((`patt p) :: pl) o#ctyp t o#expr e
| _ ->
pp f "%a @[<0>%a=@]@ %a" o#simple_patt p
(list' o#fun_binding "" "@ ") pl o#expr e)
| Ast.BiAnt (_, s) -> o#anti f s