method simple_module_expr =
fun f me ->
let () = o#node f me Ast.loc_of_module_expr
in
match me with
| Ast.MeNil _ -> assert false
| Ast.MeId (_, i) -> o#ident f i
| Ast.MeAnt (_, s) -> o#anti f s
| Ast.MeApp (_, me1, me2) ->
pp f "@[<2>%a@,(%a)@]" o#module_expr me1
o#module_expr me2
| Ast.MeFun (_, s, mt, me) ->
pp f "@[<2>functor@ @[<1>(%a :@ %a)@]@ ->@ %a@]"
o#var s o#module_type mt o#module_expr me
| Ast.MeStr (_, st) ->
pp f "@[<hv0>@[<hv2>struct@ %a@]@ end@]" o#str_item
st
| Ast.MeTyc (_, me, mt) ->
pp f "@[<1>(%a :@ %a)@]" o#module_expr me
o#module_type mt
| Ast.MePkg (_,
(Ast.ExTyc (_, e, (Ast.TyPkg (_, mt))))) ->
pp f "@[<1>(%s %a :@ %a)@]" o#value_val o#expr e
o#module_type mt
| Ast.MePkg (_, e) ->
pp f "@[<1>(%s %a)@]" o#value_val o#expr e