Module Recent

module type S = { ... };
module type S1 = (_: S) => S;
type variant =
| A
| B(int)
| C

foo

| D

bar

| E of {
a: int,
}
;
type gadt(_) =
| A : gadt(int)
| B(int) : gadt(string)

foo

| C: {
a: int,
} : gadt(unit)
;
type polymorphic_variant = [
| `A
| `B(int)
| `C

foo

| `D

bar

];
type nonrec nonrec_ = int;
type empty_conj =
| X([< `X& ('a) & ((int, float)) ]) : empty_conj
;
type conj =
| X([< `X(int) & ([< `B(int) & (float) ]) ]) : conj
;
let empty_conj: [< `X& ('a) & ((int, float)) ];
let conj: [< `X(int) & ([< `B(int) & (float) ]) ];
module Z: { ... };
module X: { ... };