jon.recoil.org

Module type Types.Wrapped

type 'a wrapped
type value_description = {
  1. val_type : 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 : value_kind;
  4. val_lpoly : 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 : 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 * 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 : Uid.t;
}
and modtype_declaration = {
  1. mtd_type : module_type option;
  2. mtd_attributes : Parsetree.attributes;
  3. mtd_loc : Location.t;
  4. mtd_uid : Uid.t;
}
val sort_of_signature_item : signature_item -> Jkind_types.Sort.t option