Module Types

type type_expr
type row_desc
type row_field
type field_kind
type commutable
type type_desc =
  1. | Tvar of string option
  2. | Tarrow of Asttypes.arg_label * type_expr * type_expr * commutable
  3. | Ttuple of type_expr list
  4. | Tconstr of Path.t * type_expr list * abbrev_memo ref
  5. | Tobject of type_expr * (Path.t * type_expr list) option ref
  6. | Tfield of string * field_kind * type_expr * type_expr
  7. | Tnil
  8. | Tsubst of type_expr * type_expr option
  9. | Tvariant of row_desc
  10. | Tunivar of string option
  11. | Tpoly of type_expr * type_expr list
  12. | Tpackage of Path.t * (Longident.t * type_expr) list
and fixed_explanation =
  1. | Univar of type_expr
  2. | Fixed_private
  3. | Reified of Path.t
  4. | Rigid
and abbrev_memo =
  1. | Mnil
  2. | Mcons of Asttypes.private_flag * Path.t * type_expr * type_expr * abbrev_memo
val is_commu_ok : commutable -> bool
val commu_ok : commutable
val commu_var : unit -> commutable
type field_kind_view =
  1. | Fprivate
  2. | Fpublic
  3. | Fabsent
val field_kind_repr : field_kind -> field_kind_view
val field_public : field_kind
val field_absent : field_kind
val field_private : unit -> field_kind
val field_kind_internal_repr : field_kind -> field_kind
val get_desc : type_expr -> type_desc
val get_level : type_expr -> int
val get_scope : type_expr -> int
val get_id : type_expr -> int
type transient_expr = private {
  1. mutable desc : type_desc;
  2. mutable level : int;
  3. mutable scope : int;
  4. id : int;
}
module Transient_expr : sig ... end
val create_expr : type_desc -> level:int -> scope:int -> id:int -> type_expr
val newty3 : level:int -> scope:int -> type_desc -> type_expr
val newty2 : level:int -> type_desc -> type_expr
module TransientTypeOps : sig ... end
val eq_type : type_expr -> type_expr -> bool
val compare_type : type_expr -> type_expr -> int
val create_row : fields:(Asttypes.label * row_field) list -> more:type_expr -> closed:bool -> fixed:fixed_explanation option -> name:(Path.t * type_expr list) option -> row_desc
val row_fields : row_desc -> (Asttypes.label * row_field) list
val row_more : row_desc -> type_expr
val row_closed : row_desc -> bool
val row_fixed : row_desc -> fixed_explanation option
val row_name : row_desc -> (Path.t * type_expr list) option
val set_row_name : row_desc -> (Path.t * type_expr list) option -> row_desc
val get_row_field : Asttypes.label -> row_desc -> row_field
type row_desc_repr =
  1. | Row of {
    1. fields : (Asttypes.label * row_field) list;
    2. more : type_expr;
    3. closed : bool;
    4. fixed : fixed_explanation option;
    5. name : (Path.t * type_expr list) option;
    }
val row_repr : row_desc -> row_desc_repr
type row_field_view =
  1. | Rpresent of type_expr option
  2. | Reither of bool * type_expr list * bool
  3. | Rabsent
val row_field_repr : row_field -> row_field_view
val rf_present : type_expr option -> row_field
val rf_absent : row_field
val rf_either : ?use_ext_of:row_field -> no_arg:bool -> type_expr list -> matched:bool -> row_field
val rf_either_of : type_expr option -> row_field
val eq_row_field_ext : row_field -> row_field -> bool
val changed_row_field_exts : row_field list -> (unit -> unit) -> bool
val match_row_field : present:(type_expr option -> 'a) -> absent:(unit -> 'a) -> either:(bool -> type_expr list -> bool -> row_field option -> 'a) -> row_field -> 'a
module Uid = Shape.Uid
module MethSet : sig ... end
module VarSet : sig ... end
module Meths : sig ... end
module Vars : sig ... end
type value_description = {
  1. val_type : type_expr;
  2. val_kind : value_kind;
  3. val_loc : Location.t;
  4. val_attributes : Parsetree.attributes;
  5. val_uid : Uid.t;
}
and value_kind =
  1. | Val_reg
  2. | Val_prim of Primitive.description
  3. | Val_ivar of Asttypes.mutable_flag * string
  4. | Val_self of class_signature * self_meths * Ident.t Vars.t * string
  5. | Val_anc of class_signature * Ident.t Meths.t * string
and self_meths =
  1. | Self_concrete of Ident.t Meths.t
  2. | Self_virtual of Ident.t Meths.t ref
and class_signature = {
  1. csig_self : type_expr;
  2. mutable csig_self_row : type_expr;
  3. mutable csig_vars : (Asttypes.mutable_flag * Asttypes.virtual_flag * type_expr) Vars.t;
  4. mutable csig_meths : (method_privacy * Asttypes.virtual_flag * type_expr) Meths.t;
}
and method_privacy =
  1. | Mpublic
  2. | Mprivate of field_kind
module Variance : sig ... end
module Separability : sig ... end
type type_declaration = {
  1. type_params : type_expr list;
  2. type_arity : int;
  3. type_kind : type_decl_kind;
  4. type_private : Asttypes.private_flag;
  5. type_manifest : type_expr option;
  6. type_variance : Variance.t list;
  7. type_separability : Separability.t list;
  8. type_is_newtype : bool;
  9. type_expansion_scope : int;
  10. type_loc : Location.t;
  11. type_attributes : Parsetree.attributes;
  12. type_immediate : Type_immediacy.t;
  13. type_unboxed_default : bool;
  14. type_uid : Uid.t;
}
and (!'lbl, !'cstr) type_kind =
  1. | Type_abstract
  2. | Type_record of 'lbl list * record_representation
  3. | Type_variant of 'cstr list * variant_representation
  4. | Type_open
and record_representation =
  1. | Record_regular
  2. | Record_float
  3. | Record_unboxed of bool
  4. | Record_inlined of int
  5. | Record_extension of Path.t
and variant_representation =
  1. | Variant_regular
  2. | Variant_unboxed
and label_declaration = {
  1. ld_id : Ident.t;
  2. ld_mutable : Asttypes.mutable_flag;
  3. ld_type : type_expr;
  4. ld_loc : Location.t;
  5. ld_attributes : Parsetree.attributes;
  6. ld_uid : Uid.t;
}
and constructor_declaration = {
  1. cd_id : Ident.t;
  2. cd_args : constructor_arguments;
  3. cd_res : type_expr option;
  4. cd_loc : Location.t;
  5. cd_attributes : Parsetree.attributes;
  6. cd_uid : Uid.t;
}
and constructor_arguments =
  1. | Cstr_tuple of type_expr list
  2. | Cstr_record of label_declaration list
type extension_constructor = {
  1. ext_type_path : Path.t;
  2. ext_type_params : type_expr list;
  3. ext_args : constructor_arguments;
  4. ext_ret_type : type_expr option;
  5. ext_private : Asttypes.private_flag;
  6. ext_loc : Location.t;
  7. ext_attributes : Parsetree.attributes;
  8. ext_uid : Uid.t;
}
and type_transparence =
  1. | Type_public
  2. | Type_new
  3. | Type_private
type class_type =
  1. | Cty_constr of Path.t * type_expr list * class_type
  2. | Cty_signature of class_signature
  3. | Cty_arrow of Asttypes.arg_label * type_expr * class_type
type class_declaration = {
  1. cty_params : type_expr list;
  2. mutable cty_type : class_type;
  3. cty_path : Path.t;
  4. cty_new : type_expr option;
  5. cty_variance : Variance.t list;
  6. cty_loc : Location.t;
  7. cty_attributes : Parsetree.attributes;
  8. cty_uid : Uid.t;
}
type class_type_declaration = {
  1. clty_params : type_expr list;
  2. clty_type : class_type;
  3. clty_path : Path.t;
  4. clty_variance : Variance.t list;
  5. clty_loc : Location.t;
  6. clty_attributes : Parsetree.attributes;
  7. clty_uid : Uid.t;
}
type visibility =
  1. | Exported
  2. | Hidden
type module_type =
  1. | Mty_ident of Path.t
  2. | Mty_signature of signature
  3. | Mty_functor of functor_parameter * module_type
  4. | Mty_alias of Path.t
and functor_parameter =
  1. | Unit
  2. | Named of Ident.t option * module_type
and module_presence =
  1. | Mp_present
  2. | Mp_absent
and signature = signature_item list
and module_declaration = {
  1. md_type : module_type;
  2. md_attributes : Parsetree.attributes;
  3. md_loc : Location.t;
  4. 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;
}
and rec_status =
  1. | Trec_not
  2. | Trec_first
  3. | Trec_next
and ext_status =
  1. | Text_first
  2. | Text_next
  3. | Text_exception
val item_visibility : signature_item -> visibility
type constructor_description = {
  1. cstr_name : string;
  2. cstr_res : type_expr;
  3. cstr_existentials : type_expr list;
  4. cstr_args : type_expr list;
  5. cstr_arity : int;
  6. cstr_tag : constructor_tag;
  7. cstr_consts : int;
  8. cstr_nonconsts : int;
  9. cstr_generalized : bool;
  10. cstr_private : Asttypes.private_flag;
  11. cstr_loc : Location.t;
  12. cstr_attributes : Parsetree.attributes;
  13. cstr_inlined : type_declaration option;
  14. cstr_uid : Uid.t;
}
and constructor_tag =
  1. | Cstr_constant of int
  2. | Cstr_block of int
  3. | Cstr_unboxed
  4. | Cstr_extension of Path.t * bool
val equal_tag : constructor_tag -> constructor_tag -> bool
val may_equal_constr : constructor_description -> constructor_description -> bool
type label_description = {
  1. lbl_name : string;
  2. lbl_res : type_expr;
  3. lbl_arg : type_expr;
  4. lbl_mut : Asttypes.mutable_flag;
  5. lbl_pos : int;
  6. lbl_all : label_description array;
  7. lbl_repres : record_representation;
  8. lbl_private : Asttypes.private_flag;
  9. lbl_loc : Location.t;
  10. lbl_attributes : Parsetree.attributes;
  11. lbl_uid : Uid.t;
}
val bound_value_identifiers : signature -> Ident.t list
val signature_item_id : signature_item -> Ident.t
type snapshot
val snapshot : unit -> snapshot
val backtrack : cleanup_abbrev:(unit -> unit) -> snapshot -> unit
val undo_first_change_after : snapshot -> unit
val undo_compress : snapshot -> unit
val set_type_desc : type_expr -> type_desc -> unit
val set_level : type_expr -> int -> unit
val set_scope : type_expr -> int -> unit
val set_name : (Path.t * type_expr list) option ref -> (Path.t * type_expr list) option -> unit
val set_univar : type_expr option ref -> type_expr -> unit
val set_commu_ok : commutable -> unit