(* TEST
 flags = " -w -a ";
 setup-ocamlc.byte-build-env;
 ocamlc.byte;
 check-ocamlc.byte-output;
*)

module Gen_spec = struct type 't extra = unit end

module type S = sig
  module Spec : sig type 't extra = unit end

  type t
  val make : unit -> t Spec.extra
end (* S *)

module Make () : S with module Spec := Gen_spec = struct
  type t = int
  let make () = ()
end (* Make *)

let () =
  let module M = Make () in
  M.make ()
  (* (M.make () : unit) *)
