jon.recoil.org

Module Subst.Lazy

include Types.Wrapped
type 'a wrapped
type value_description = {
  1. val_type : Types.type_expr wrapped;
  2. val_modalities : Mode.Modality.t;
    (*

    The modalities on the value in a signature. It is undefined in several cases:

    • The value is not in a structure, so there is no modalities to talk about. For example, adding let x = ... in to the environment will have val_modalities set to undefined.
    • 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.
    *)
  3. val_kind : Types.value_kind;
  4. val_lpoly : Types.Lpoly.t wrapped;
    (*

    Guaranteed determined for all values visible outside type_let. May be to_generalize during intermediate stages of typing a let poly_ binding. See Lpoly.

    *)
  5. val_loc : Location.t;
  6. val_zero_alloc : Zero_alloc.t;
  7. val_attributes : Parsetree.attributes;
  8. val_uid : Types.Uid.t;
}
type module_type =
  1. | Mty_ident of Path.t
  2. | Mty_signature of signature
  3. | Mty_functor of functor_parameter * module_type * Mode.Alloc.lr
  4. | Mty_alias of Path.t
  5. | Mty_strengthen of module_type * Path.t * Types.Aliasability.t
and functor_parameter =
  1. | Unit
  2. | Named of Ident.t option * module_type * Mode.Alloc.lr
and signature = signature_item list wrapped
and persistent_signature = signature * Mode.Staticity.Const.t
and module_declaration = {
  1. md_type : module_type;
  2. md_modalities : Mode.Modality.t;
    (*

    Similiar to val_modalities; see comments there.

    *)
  3. md_attributes : Parsetree.attributes;
  4. md_loc : Location.t;
  5. md_uid : Types.Uid.t;
}
and modtype_declaration = {
  1. mtd_type : module_type option;
  2. mtd_attributes : Parsetree.attributes;
  3. mtd_loc : Location.t;
  4. mtd_uid : Types.Uid.t;
}
val sort_of_signature_item : signature_item -> Jkind_types.Sort.t option
val of_value : 'a -> 'a wrapped
val of_lazy : 'a Lazy.t -> 'a wrapped
val substitute : t -> 'a wrapped -> 'a wrapped
val of_modtype : Types.module_type -> module_type
val of_signature : Types.signature -> signature
val of_signature_item : Types.signature_item -> signature_item
val of_functor_parameter : Types.functor_parameter -> functor_parameter
val of_value_description : Types.value_description -> value_description
val module_decl : scoping -> t -> module_declaration -> module_declaration
val modtype : scoping -> t -> module_type -> module_type
val modtype_decl : scoping -> t -> modtype_declaration -> modtype_declaration
val signature : scoping -> t -> signature -> signature
val signature_item : scoping -> t -> signature_item -> signature_item
val value_description : t -> value_description -> value_description
val force_module_decl : module_declaration -> Types.module_declaration
val force_modtype : module_type -> Types.module_type
val force_signature : signature -> Types.signature
val force_signature_once : signature -> signature_item list
val force_signature_item : signature_item -> Types.signature_item
val force_functor_parameter : functor_parameter -> Types.functor_parameter
val force_value_description : value_description -> Types.value_description
val force_type_expr : Types.type_expr wrapped -> Types.type_expr
val force_lpoly : Types.Lpoly.t wrapped -> Types.Lpoly.t