Module Outcometree
An out_name is a string representation of an identifier which can be rewritten on the fly to avoid name collisions
type out_ident = | Oide_apply of Outcometree.out_ident * Outcometree.out_ident| Oide_dot of Outcometree.out_ident * string| Oide_ident of Outcometree.out_name| Oide_hash of Outcometree.out_ident
type out_value = | Oval_array of Outcometree.out_value list * Asttypes.mutable_flag| Oval_char of char| Oval_constr of Outcometree.out_ident * Outcometree.out_value list| Oval_ellipsis| Oval_float of float| Oval_float32 of Stdlib.Obj.t| Oval_int of int| Oval_int8 of int| Oval_int16 of int| Oval_int32 of int32| Oval_int64 of int64| Oval_nativeint of nativeint| Oval_list of Outcometree.out_value list| Oval_printer of Stdlib.Format.formatter -> unit| Oval_record of (Outcometree.out_ident * Outcometree.out_value) list| Oval_record_unboxed_product of (Outcometree.out_ident * Outcometree.out_value) list| Oval_string of string * int * Outcometree.out_string| Oval_stuff of string| Oval_tuple of (string option * Outcometree.out_value) list| Oval_unboxed_tuple of (string option * Outcometree.out_value) list| Oval_variant of string * Outcometree.out_value option| Oval_lazy of Outcometree.out_value| Oval_code of CamlinternalQuote.Code.t
This definition avoids a cyclic dependency between Outcometree and Types.
type out_arg_mode = Outcometree.out_mode listtype out_ret_mode = | Orm_any of Outcometree.out_mode list(*The ret type could be anything, with modes annotating.
*)| Orm_no_parens(*The ret type is arrow, and no need to print parens around the arrow
*)| Orm_parens of Outcometree.out_mode list(*The ret type is arrow, and need to print parens around the arrow, with modes annotating.
*)
type out_jkind_const = | Ojkind_const_default| Ojkind_const_abbreviation of string(*The base of
*)Ojkind_const_modis optional to enable printing individual axes| Ojkind_const_mod of Outcometree.out_jkind_const option * string list| Ojkind_const_with of Outcometree.out_jkind_const * Outcometree.out_type * Outcometree.out_modality list| Ojkind_const_kind_of of Outcometree.out_type| Ojkind_const_product of Outcometree.out_jkind_const list
Represents a constant jkind
and out_jkind = | Ojkind_const of Outcometree.out_jkind_const| Ojkind_var of string| Ojkind_product of Outcometree.out_jkind list
and out_vars_jkinds = (string * Outcometree.out_jkind option) listand out_type_param = {ot_non_gen : bool;ot_name : string;ot_variance : Asttypes.variance * Asttypes.injectivity;ot_jkind : Outcometree.out_jkind option;
}and out_type = | Otyp_abstract| Otyp_open| Otyp_alias of {non_gen : bool;aliased : Outcometree.out_type;alias : string;
}| Otyp_arrow of Outcometree.arg_label * Outcometree.out_arg_mode * Outcometree.out_type * Outcometree.out_type(*INVARIANT: the
*)out_typefor the return must beOtyp_ret.| Otyp_class of Outcometree.out_ident * Outcometree.out_type list| Otyp_constr of Outcometree.out_ident * Outcometree.out_type list| Otyp_manifest of Outcometree.out_type * Outcometree.out_type| Otyp_object of {fields : (string * Outcometree.out_type) list;open_row : bool;
}| Otyp_record of (string * Outcometree.out_mutability * Outcometree.out_type * Outcometree.out_modality list) list| Otyp_record_unboxed_product of (string * Outcometree.out_mutability * Outcometree.out_type * Outcometree.out_modality list) list| Otyp_stuff of string| Otyp_sum of Outcometree.out_constructor list| Otyp_tuple of (string option * Outcometree.out_type) list| Otyp_unboxed_tuple of (string option * Outcometree.out_type) list| Otyp_var of bool * string| Otyp_variant of Outcometree.out_variant * bool * string list option| Otyp_quote of Outcometree.out_type| Otyp_splice of Outcometree.out_type| Otyp_poly of Outcometree.out_vars_jkinds * Outcometree.out_type| Otyp_module of Outcometree.out_ident * (string * Outcometree.out_type) list| Otyp_attribute of Outcometree.out_type * Outcometree.out_attribute| Otyp_jkind_annot of Outcometree.out_type * Outcometree.out_jkind| Otyp_of_kind of Outcometree.out_jkind| Otyp_ret of Outcometree.out_ret_mode * Outcometree.out_type(*INVARIANT: See
*)out_ret_mode.
and out_constructor = {ocstr_name : string;ocstr_args : (Outcometree.out_type * Outcometree.out_modality list) list;ocstr_return_type : (Outcometree.out_vars_jkinds * Outcometree.out_type) option;
}and out_variant = | Ovar_fields of (string * bool * Outcometree.out_type list) list| Ovar_typ of Outcometree.out_type
type out_class_type = | Octy_constr of Outcometree.out_ident * Outcometree.out_type list| Octy_arrow of Outcometree.arg_label * Outcometree.out_type * Outcometree.out_class_type| Octy_signature of Outcometree.out_type option * Outcometree.out_class_sig_item list
and out_class_sig_item = | Ocsg_constraint of Outcometree.out_type * Outcometree.out_type| Ocsg_method of string * bool * bool * Outcometree.out_type| Ocsg_value of string * bool * bool * Outcometree.out_type
type out_module_type = | Omty_abstract| Omty_functor of (string option * Outcometree.out_module_type) option * Outcometree.out_module_type| Omty_ident of Outcometree.out_ident| Omty_signature of Outcometree.out_sig_item list| Omty_alias of Outcometree.out_ident| Omty_strengthen of Outcometree.out_module_type * Outcometree.out_ident * bool
and out_sig_item = | Osig_class of bool * string * Outcometree.out_type_param list * Outcometree.out_class_type * Outcometree.out_rec_status| Osig_class_type of bool * string * Outcometree.out_type_param list * Outcometree.out_class_type * Outcometree.out_rec_status| Osig_typext of Outcometree.out_extension_constructor * Outcometree.out_ext_status| Osig_modtype of string * Outcometree.out_module_type| Osig_module of string * Outcometree.out_module_type * Outcometree.out_modality list * Outcometree.out_rec_status| Osig_type of Outcometree.out_type_decl * Outcometree.out_rec_status| Osig_value of Outcometree.out_val_decl| Osig_ellipsis
and out_type_decl = {otype_name : string;otype_params : Outcometree.out_type_param list;otype_type : Outcometree.out_type;otype_private : Asttypes.private_flag;otype_jkind : Outcometree.out_jkind option;otype_unboxed : bool;otype_or_null_reexport : bool;otype_cstrs : (Outcometree.out_type * Outcometree.out_type) list;otype_attributes : Outcometree.out_attribute list;
}and out_extension_constructor = {oext_name : string;oext_type_name : string;oext_type_params : string list;oext_args : (Outcometree.out_type * Outcometree.out_modality list) list;oext_ret_type : (Outcometree.out_vars_jkinds * Outcometree.out_type) option;oext_private : Asttypes.private_flag;
}and out_type_extension = {otyext_name : string;otyext_params : string list;otyext_constructors : Outcometree.out_constructor list;otyext_private : Asttypes.private_flag;
}and out_val_decl = {oval_name : string;oval_type : Outcometree.out_type;oval_modalities : Outcometree.out_modality list;oval_prims : string list;oval_attributes : Outcometree.out_attribute list;
}type out_phrase = | Ophr_eval of Outcometree.out_value * Outcometree.out_type| Ophr_signature of (Outcometree.out_sig_item * Outcometree.out_value option) list| Ophr_exception of exn * Outcometree.out_value