Module Module

Foo.

let foo: unit;

The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See https://caml.inria.fr/mantis/view.php?id=7701.

module type S = { ... };
module type S1;
module type S2 = S;
module type S3 = S with type t = int and type u = string;
module type S4 = S with type t := int;
module type S5 = S with type v('a) := list('a);
type result('a, 'b);
module type S6 = S with type w('a, 'b) := result('a'b);
module M': { ... };
module type S7 = S with module M = M';
module type S8 = S with module M := M';
module type S9 = module type of M';
module rec Mutually: { ... };
and Recursive: { ... };