module type S = sig type t end
module Make (M : sig end) : S = struct type t end
module Make_ok1 (M : sig end) : sig
type t
module A : S with type t = t
end = struct
module A = struct
include Make (struct end)
end
include A
end
module Make_ok2 (M : sig end) : sig
type t
module B : S with type t = t
end = struct
module T = struct end
module B = struct
include Make (T)
end
include B
end
module Make_bad (M : sig end) : sig
type t
module C : S with type t = t
end = struct
module C = struct
module T = struct end
include Make (T)
end
include C
end
========================================
--
Carl Eastlund