Module Subst.Lazy
include Types.Wrapped
type value_description = {val_type : Types.type_expr wrapped;val_modalities : Mode.Modality.t;(*The modalities on the value in a signature. It is
undefinedin several cases:- The value is not in a structure, so there is no modalities to talk about. For example, adding
let x = ... into the environment will haveval_modalitiesset toundefined. - The value was from a structure, but the original modalities have been applied and we have the real mode of the value. The original modalities shouldn't be looked again and is replaced by
undefined.
- The value is not in a structure, so there is no modalities to talk about. For example, adding
val_kind : Types.value_kind;val_lpoly : Types.Lpoly.t wrapped;(*Guaranteed
*)determinedfor all values visible outsidetype_let. May beto_generalizeduring intermediate stages of typing alet poly_binding. SeeLpoly.val_loc : Location.t;val_zero_alloc : Zero_alloc.t;val_attributes : Parsetree.attributes;val_uid : Types.Uid.t;
}type module_type = | Mty_ident of Path.t| Mty_signature of signature| Mty_functor of functor_parameter * module_type * Mode.Alloc.lr| Mty_alias of Path.t| Mty_strengthen of module_type * Path.t * Types.Aliasability.t
and signature = signature_item list wrappedand persistent_signature = signature * Mode.Staticity.Const.tand signature_item = | Sig_value of Ident.t * value_description * Types.visibility| Sig_type of Ident.t * Types.type_declaration * Types.rec_status * Types.visibility| Sig_typext of Ident.t * Types.extension_constructor * Types.ext_status * Types.visibility| Sig_module of Ident.t * Types.module_presence * module_declaration * Types.rec_status * Types.visibility| Sig_modtype of Ident.t * modtype_declaration * Types.visibility| Sig_class of Ident.t * Types.class_declaration * Types.rec_status * Types.visibility| Sig_class_type of Ident.t * Types.class_type_declaration * Types.rec_status * Types.visibility| Sig_jkind of Ident.t * Types.jkind_declaration * Types.visibility
and module_declaration = {md_type : module_type;md_modalities : Mode.Modality.t;(*Similiar to
*)val_modalities; see comments there.md_attributes : Parsetree.attributes;md_loc : Location.t;md_uid : Types.Uid.t;
}and modtype_declaration = {mtd_type : module_type option;mtd_attributes : Parsetree.attributes;mtd_loc : Location.t;mtd_uid : Types.Uid.t;
}val sort_of_signature_item : signature_item -> Jkind_types.Sort.t optionval of_value : 'a -> 'a wrappedval of_module_decl : Types.module_declaration -> module_declarationval of_modtype : Types.module_type -> module_typeval of_modtype_decl : Types.modtype_declaration -> modtype_declarationval of_signature : Types.signature -> signatureval of_signature_item : Types.signature_item -> signature_itemval of_functor_parameter : Types.functor_parameter -> functor_parameterval of_value_description : Types.value_description -> value_descriptionval module_decl : scoping -> t -> module_declaration -> module_declarationval modtype : scoping -> t -> module_type -> module_typeval modtype_decl : scoping -> t -> modtype_declaration -> modtype_declarationval signature_item : scoping -> t -> signature_item -> signature_itemval value_description : t -> value_description -> value_descriptionval force_module_decl : module_declaration -> Types.module_declarationval force_modtype : module_type -> Types.module_typeval force_modtype_decl : modtype_declaration -> Types.modtype_declarationval force_signature : signature -> Types.signatureval force_signature_once : signature -> signature_item listval force_signature_item : signature_item -> Types.signature_itemval force_functor_parameter : functor_parameter -> Types.functor_parameterval force_value_description : value_description -> Types.value_descriptionval force_type_expr : Types.type_expr wrapped -> Types.type_exprval force_lpoly : Types.Lpoly.t wrapped -> Types.Lpoly.t