      Module of Ident.t | Modtype of Ident.t | Arg of Ident.t | Body of Ident.t
 Index: typing/mtype.ml
 ===================================================================
---- typing/mtype.ml	(revision 13285)
+--- typing/mtype.ml	(revision 13286)
 +++ typing/mtype.ml	(working copy)
 @@ -34,7 +34,8 @@
    match scrape env mty with

   | module_type WITH with_constraints
       { mkmty(Pmty_with($1, List.rev $3)) }
   | MODULE TYPE OF module_expr
Index: typing/typemod.ml
===================================================================
--- typing/typemod.ml	(revision 13285)
+++ typing/typemod.ml	(working copy)
@@ -37,6 +37,7 @@
   | Not_a_packed_module of type_expr

Index: parsing/pprintast.ml
===================================================================
--- parsing/pprintast.ml	(revision 13286)
+++ parsing/pprintast.ml	(working copy)
@@ -821,6 +821,8 @@
     | Pmty_signature (s) ->
         pp f "@[<hv0>@[<hv2>sig@ %a@]@ end@]" (* "@[<hov>sig@ %a@ end@]" *)
           (self#list self#signature_item  ) s (* FIXME wrong indentation*)
+    | Pmty_functor ({txt="*"}, mt1, mt2) ->
+        pp f "@[<hov2>functor () ->@ %a@]" self#module_type mt2 
     | Pmty_functor (s, mt1, mt2) ->
         pp f "@[<hov2>functor@ (%s@ :@ %a)@ ->@ %a@]" s.txt
           self#module_type mt1  self#module_type mt2 
@@ -922,6 +924,8 @@
           self#module_type mt
     | Pmod_ident (li) ->
         pp f "%a" self#longident_loc li;
+    | Pmod_functor ({txt="*"}, mt, me) ->
+        pp f "functor ()@;->@;%a" self#module_expr me
     | Pmod_functor (s, mt, me) ->
         pp f "functor@ (%s@ :@ %a)@;->@;%a"
           s.txt  self#module_type mt  self#module_expr me
@@ -1001,7 +1005,8 @@
     | Pstr_module (s, me) ->
         let rec module_helper me = match me.pmod_desc with
         | Pmod_functor(s,mt,me) ->
-            pp f "(%s:%a)"  s.txt  self#module_type mt ;
+            if s.txt = "*" then pp f "()"
+            else pp f "(%s:%a)"  s.txt  self#module_type mt ;
             module_helper me
         | _ -> me in 
         pp f "@[<hov2>module %s%a@]"
Index: parsing/parser.mly
===================================================================
--- parsing/parser.mly	(revision 13286)
+++ parsing/parser.mly	(working copy)
@@ -532,8 +532,12 @@
       { unclosed "struct" 1 "end" 3 }
