Module Btype

module TypeSet : sig ... end
module TypeMap : sig ... end
module TypeHash : sig ... end
module TypePairs : sig ... end
val generic_level : int
val newgenvar : ?name:string -> unit -> Types.type_expr
val newgenstub : scope:int -> Types.type_expr
val is_Tvar : Types.type_expr -> bool
val is_Tunivar : Types.type_expr -> bool
val is_Tconstr : Types.type_expr -> bool
val dummy_method : Asttypes.label
val is_fixed : Types.row_desc -> bool
val has_fixed_explanation : Types.row_desc -> bool
val fixed_explanation : Types.row_desc -> Types.fixed_explanation option
val merge_fixed_explanation : Types.fixed_explanation option -> Types.fixed_explanation option -> Types.fixed_explanation option
val static_row : Types.row_desc -> bool
val hash_variant : Asttypes.label -> int
val row_of_type : Types.type_expr -> Types.type_expr
val has_constr_row : Types.type_expr -> bool
val is_row_name : string -> bool
val is_constr_row : allow_ident:bool -> Types.type_expr -> bool
val set_static_row_name : Types.type_declaration -> Path.t -> unit
val iter_type_expr : (Types.type_expr -> unit) -> Types.type_expr -> unit
val fold_type_expr : ('a -> Types.type_expr -> 'a) -> 'a -> Types.type_expr -> 'a
val iter_row : (Types.type_expr -> unit) -> Types.row_desc -> unit
val fold_row : ('a -> Types.type_expr -> 'a) -> 'a -> Types.row_desc -> 'a
val iter_abbrev : (Types.type_expr -> unit) -> Types.abbrev_memo -> unit
val iter_type_expr_kind : (Types.type_expr -> unit) -> Types.type_decl_kind -> unit
val iter_type_expr_cstr_args : (Types.type_expr -> unit) -> Types.constructor_arguments -> unit
type type_iterators = {
  1. it_signature : type_iterators -> Types.signature -> unit;
  2. it_signature_item : type_iterators -> Types.signature_item -> unit;
  3. it_value_description : type_iterators -> Types.value_description -> unit;
  4. it_type_declaration : type_iterators -> Types.type_declaration -> unit;
  5. it_extension_constructor : type_iterators -> Types.extension_constructor -> unit;
  6. it_module_declaration : type_iterators -> Types.module_declaration -> unit;
  7. it_modtype_declaration : type_iterators -> Types.modtype_declaration -> unit;
  8. it_class_declaration : type_iterators -> Types.class_declaration -> unit;
  9. it_class_type_declaration : type_iterators -> Types.class_type_declaration -> unit;
  10. it_functor_param : type_iterators -> Types.functor_parameter -> unit;
  11. it_module_type : type_iterators -> Types.module_type -> unit;
  12. it_class_type : type_iterators -> Types.class_type -> unit;
  13. it_type_kind : type_iterators -> Types.type_decl_kind -> unit;
  14. it_do_type_expr : type_iterators -> Types.type_expr -> unit;
  15. it_type_expr : type_iterators -> Types.type_expr -> unit;
  16. it_path : Path.t -> unit;
}
val type_iterators : type_iterators
val unmark_iterators : type_iterators
val copy_type_desc : ?keep_names:bool -> (Types.type_expr -> Types.type_expr) -> Types.type_desc -> Types.type_desc
val copy_row : (Types.type_expr -> Types.type_expr) -> bool -> Types.row_desc -> bool -> Types.type_expr -> Types.row_desc
module For_copy : sig ... end
val lowest_level : int
val not_marked_node : Types.type_expr -> bool
val logged_mark_node : Types.type_expr -> unit
val try_logged_mark_node : Types.type_expr -> bool
val flip_mark_node : Types.type_expr -> unit
val try_mark_node : Types.type_expr -> bool
val mark_type : Types.type_expr -> unit
val mark_type_params : Types.type_expr -> unit
val unmark_type : Types.type_expr -> unit
val unmark_type_decl : Types.type_declaration -> unit
val unmark_extension_constructor : Types.extension_constructor -> unit
val unmark_class_type : Types.class_type -> unit
val unmark_class_signature : Types.class_signature -> unit
val cleanup_abbrev : unit -> unit
val forget_abbrev : Types.abbrev_memo ref -> Path.t -> unit
val snapshot : unit -> Types.snapshot
val backtrack : Types.snapshot -> unit
val is_optional : Asttypes.arg_label -> bool
val prefixed_label_name : Asttypes.arg_label -> Asttypes.label
val extract_label : Asttypes.label -> (Asttypes.arg_label * 'a) list -> (Asttypes.arg_label * 'a * bool * (Asttypes.arg_label * 'a) list) option
val signature_of_class_type : Types.class_type -> Types.class_signature
val scrape_class_type : Types.class_type -> Types.class_type
val class_type_arity : Types.class_type -> int
val abbreviate_class_type : Path.t -> Types.type_expr list -> Types.class_type -> Types.class_type
val self_type_row : Types.class_type -> Types.type_expr
val methods : Types.class_signature -> string list
val virtual_methods : Types.class_signature -> string list
val concrete_methods : Types.class_signature -> Types.MethSet.t
val public_methods : Types.class_signature -> string list
val instance_vars : Types.class_signature -> string list
val virtual_instance_vars : Types.class_signature -> string list
val concrete_instance_vars : Types.class_signature -> Types.VarSet.t
val instance_variable_type : Asttypes.label -> Types.class_signature -> Types.type_expr
val print_raw : (Format.formatter -> Types.type_expr -> unit) ref
val cstr_type_path : Types.constructor_description -> Path.t