Subst.Lazy
type module_decl = {
mdl_type: modtype,
mdl_attributes: Parsetree.attributes,
mdl_loc: Location.t,
mdl_uid: Shape.Uid.t,
};
and modtype =
| MtyL_ident(Path.t)
| MtyL_signature(signature)
| MtyL_functor(functor_parameter, modtype)
| MtyL_alias(Path.t)
;
and modtype_declaration = {
mtdl_type: option(modtype),
mtdl_attributes: Parsetree.attributes,
mtdl_loc: Location.t,
mtdl_uid: Shape.Uid.t,
};
and signature_item =
| SigL_value(Ident.t, Types.value_description, Types.visibility)
| SigL_type(Ident.t, Types.type_declaration, Types.rec_status, Types.visibility)
| SigL_typext(Ident.t, Types.extension_constructor, Types.ext_status, Types.visibility)
| SigL_module(Ident.t, Types.module_presence, module_decl, Types.rec_status,
Types.visibility)
| SigL_modtype(Ident.t, modtype_declaration, Types.visibility)
| SigL_class(Ident.t, Types.class_declaration, Types.rec_status, Types.visibility)
| SigL_class_type(Ident.t, Types.class_type_declaration, Types.rec_status,
Types.visibility)
;
let of_module_decl: Types.module_declaration => module_decl;
let of_modtype: Types.module_type => modtype;
let of_modtype_decl: Types.modtype_declaration => modtype_declaration;
let of_signature: Types.signature => signature;
let of_signature_items: list(signature_item) => signature;
let of_signature_item: Types.signature_item => signature_item;
let module_decl: scoping => t => module_decl => module_decl;
let modtype_decl: scoping => t => modtype_declaration => modtype_declaration;
let signature_item: scoping => t => signature_item => signature_item;
let force_module_decl: module_decl => Types.module_declaration;
let force_modtype: modtype => Types.module_type;
let force_modtype_decl: modtype_declaration => Types.modtype_declaration;
let force_signature: signature => Types.signature;
let force_signature_once: signature => list(signature_item);
let force_signature_item: signature_item => Types.signature_item;