Lang.ModuleTypeSourcetype substitution = | ModuleEq of Paths.Fragment.Module.t * Module.Equation.t| ModuleTypeEq of Paths.Fragment.ModuleType.t * ModuleType.expr| TypeEq of Paths.Fragment.Type.t * TypeDecl.Equation.t| ModuleSubst of Paths.Fragment.Module.t * Paths.Path.Module.t| ModuleTypeSubst of Paths.Fragment.ModuleType.t * ModuleType.expr| TypeSubst of Paths.Fragment.Type.t * TypeDecl.Equation.ttype simple_expansion = | Signature of Signature.t| Functor of FunctorParameter.t * simple_expansiontype typeof_t = {t_desc : type_of_desc;t_original_path : Paths.Path.Module.t;t_expansion : simple_expansion option;}module U : sig ... endtype with_t = {w_substitutions : substitution list;w_expansion : simple_expansion option;w_expr : U.expr;}type expr = | Path of path_t| Signature of Signature.t| Functor of FunctorParameter.t * expr| With of with_t| TypeOf of typeof_ttype t = {id : Paths.Identifier.ModuleType.t;source_loc : Paths.Identifier.SourceLocation.t option;Can be None for module types created by a type substitution.
doc : Comment.docs;canonical : Paths.Path.ModuleType.t option;expr : expr option;}