module Located : sig ... end
include sig ... end
val loc : Location.t
val attribute : name:string Ocaml_common.Location.loc -> payload:Migrate_parsetree.Ast_408.Parsetree.payload -> Migrate_parsetree.Ast_408.Parsetree.attribute
val binding_op : op:string Ocaml_common.Location.loc -> pat:Migrate_parsetree.Ast_408.Parsetree.pattern -> exp:Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.binding_op
val case : lhs:Migrate_parsetree.Ast_408.Parsetree.pattern -> guard:Migrate_parsetree.Ast_408.Parsetree.expression option -> rhs:Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.case
val pcl_constr : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_structure : Migrate_parsetree.Ast_408.Parsetree.class_structure -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_fun : Migrate_parsetree.Ast_408.Asttypes.arg_label -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.class_expr -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_apply : Migrate_parsetree.Ast_408.Parsetree.class_expr -> (Migrate_parsetree.Ast_408.Asttypes.arg_label * Migrate_parsetree.Ast_408.Parsetree.expression) list -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_let : Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.value_binding list -> Migrate_parsetree.Ast_408.Parsetree.class_expr -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_constraint : Migrate_parsetree.Ast_408.Parsetree.class_expr -> Migrate_parsetree.Ast_408.Parsetree.class_type -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcl_open : Ocaml_common.Longident.t Ocaml_common.Location.loc Migrate_parsetree.Ast_408.Parsetree.open_infos -> Migrate_parsetree.Ast_408.Parsetree.class_expr -> Migrate_parsetree.Ast_408.Parsetree.class_expr
val pcf_inherit : Migrate_parsetree.Ast_408.Asttypes.override_flag -> Migrate_parsetree.Ast_408.Parsetree.class_expr -> string Ocaml_common.Location.loc option -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_val : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Asttypes.mutable_flag * Migrate_parsetree.Ast_408.Parsetree.class_field_kind) -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_method : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Asttypes.private_flag * Migrate_parsetree.Ast_408.Parsetree.class_field_kind) -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_constraint : (Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Parsetree.core_type) -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_initializer : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_attribute : Migrate_parsetree.Ast_408.Parsetree.attribute -> Migrate_parsetree.Ast_408.Parsetree.class_field
val pcf_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.class_field
val class_infos : virt:Migrate_parsetree.Ast_408.Asttypes.virtual_flag -> params:(Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Asttypes.variance) list -> name:string Ocaml_common.Location.loc -> expr:'a -> 'a Migrate_parsetree.Ast_408.Parsetree.class_infos
val class_signature : self:Migrate_parsetree.Ast_408.Parsetree.core_type -> fields:Migrate_parsetree.Ast_408.Parsetree.class_type_field list -> Migrate_parsetree.Ast_408.Parsetree.class_signature
val class_structure : self:Migrate_parsetree.Ast_408.Parsetree.pattern -> fields:Migrate_parsetree.Ast_408.Parsetree.class_field list -> Migrate_parsetree.Ast_408.Parsetree.class_structure
val pcty_constr : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.class_type
val pcty_signature : Migrate_parsetree.Ast_408.Parsetree.class_signature -> Migrate_parsetree.Ast_408.Parsetree.class_type
val pcty_arrow : Migrate_parsetree.Ast_408.Asttypes.arg_label -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.class_type -> Migrate_parsetree.Ast_408.Parsetree.class_type
val pcty_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.class_type
val pcty_open : Ocaml_common.Longident.t Ocaml_common.Location.loc Migrate_parsetree.Ast_408.Parsetree.open_infos -> Migrate_parsetree.Ast_408.Parsetree.class_type -> Migrate_parsetree.Ast_408.Parsetree.class_type
val pctf_inherit : Migrate_parsetree.Ast_408.Parsetree.class_type -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val pctf_val : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Asttypes.mutable_flag * Migrate_parsetree.Ast_408.Asttypes.virtual_flag * Migrate_parsetree.Ast_408.Parsetree.core_type) -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val pctf_method : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Asttypes.private_flag * Migrate_parsetree.Ast_408.Asttypes.virtual_flag * Migrate_parsetree.Ast_408.Parsetree.core_type) -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val pctf_constraint : (Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Parsetree.core_type) -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val pctf_attribute : Migrate_parsetree.Ast_408.Parsetree.attribute -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val pctf_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.class_type_field
val constructor_declaration : name:string Ocaml_common.Location.loc -> args:Migrate_parsetree.Ast_408.Parsetree.constructor_arguments -> res:Migrate_parsetree.Ast_408.Parsetree.core_type option -> Migrate_parsetree.Ast_408.Parsetree.constructor_declaration
val ptyp_any : Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_var : string -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_arrow : Migrate_parsetree.Ast_408.Asttypes.arg_label -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_tuple : Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_constr : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_object : Migrate_parsetree.Ast_408.Parsetree.object_field list -> Migrate_parsetree.Ast_408.Asttypes.closed_flag -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_class : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_alias : Migrate_parsetree.Ast_408.Parsetree.core_type -> string -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_variant : Migrate_parsetree.Ast_408.Parsetree.row_field list -> Migrate_parsetree.Ast_408.Asttypes.closed_flag -> string list option -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_poly : string Ocaml_common.Location.loc list -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_package : (Ocaml_common.Longident.t Ocaml_common.Location.loc * (Ocaml_common.Longident.t Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.core_type) list) -> Migrate_parsetree.Ast_408.Parsetree.core_type
val ptyp_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.core_type
val pdir_string : string -> Migrate_parsetree.Ast_408.Parsetree.directive_argument
val pdir_int : string -> char option -> Migrate_parsetree.Ast_408.Parsetree.directive_argument
val pdir_ident : Ocaml_common.Longident.t -> Migrate_parsetree.Ast_408.Parsetree.directive_argument
val pdir_bool : bool -> Migrate_parsetree.Ast_408.Parsetree.directive_argument
val pexp_ident : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_constant : Migrate_parsetree.Ast_408.Parsetree.constant -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_let : Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.value_binding list -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_function : Migrate_parsetree.Ast_408.Parsetree.case list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_fun : Migrate_parsetree.Ast_408.Asttypes.arg_label -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_apply : Migrate_parsetree.Ast_408.Parsetree.expression -> (Migrate_parsetree.Ast_408.Asttypes.arg_label * Migrate_parsetree.Ast_408.Parsetree.expression) list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_match : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.case list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_try : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.case list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_tuple : Migrate_parsetree.Ast_408.Parsetree.expression list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_construct : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_variant : string -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_record : (Ocaml_common.Longident.t Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.expression) list -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_field : Migrate_parsetree.Ast_408.Parsetree.expression -> Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_setfield : Migrate_parsetree.Ast_408.Parsetree.expression -> Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_array : Migrate_parsetree.Ast_408.Parsetree.expression list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_ifthenelse : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression option -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_sequence : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_while : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_for : Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Asttypes.direction_flag -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_constraint : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_coerce : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.core_type option -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_send : Migrate_parsetree.Ast_408.Parsetree.expression -> string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_new : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_setinstvar : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_override : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.expression) list -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_letmodule : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_letexception : Migrate_parsetree.Ast_408.Parsetree.extension_constructor -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_assert : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_lazy : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_poly : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.core_type option -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_object : Migrate_parsetree.Ast_408.Parsetree.class_structure -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_newtype : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_pack : Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_open : Migrate_parsetree.Ast_408.Parsetree.module_expr Migrate_parsetree.Ast_408.Parsetree.open_infos -> Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_letop : Migrate_parsetree.Ast_408.Parsetree.letop -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.expression
val pexp_unreachable : Migrate_parsetree.Ast_408.Parsetree.expression
val extension_constructor : name:string Ocaml_common.Location.loc -> kind:Migrate_parsetree.Ast_408.Parsetree.extension_constructor_kind -> Migrate_parsetree.Ast_408.Parsetree.extension_constructor
val include_infos : 'a -> 'a Migrate_parsetree.Ast_408.Parsetree.include_infos
val label_declaration : name:string Ocaml_common.Location.loc -> mutable_:Migrate_parsetree.Ast_408.Asttypes.mutable_flag -> type_:Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.label_declaration
val letop : let_:Migrate_parsetree.Ast_408.Parsetree.binding_op -> ands:Migrate_parsetree.Ast_408.Parsetree.binding_op list -> body:Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.letop
val location : start:Stdlib.Lexing.position -> end_:Stdlib.Lexing.position -> ghost:bool -> Warnings.loc
val module_binding : name:string Ocaml_common.Location.loc -> expr:Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_binding
val module_declaration : name:string Ocaml_common.Location.loc -> type_:Migrate_parsetree.Ast_408.Parsetree.module_type -> Migrate_parsetree.Ast_408.Parsetree.module_declaration
val pmod_ident : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_structure : Migrate_parsetree.Ast_408.Parsetree.structure_item list -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_functor : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_type option -> Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_apply : Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_constraint : Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_type -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_unpack : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val pmod_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.module_expr
val module_substitution : name:string Ocaml_common.Location.loc -> manifest:Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_substitution
val pmty_ident : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_signature : Migrate_parsetree.Ast_408.Parsetree.signature_item list -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_functor : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_type option -> Migrate_parsetree.Ast_408.Parsetree.module_type -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_with : Migrate_parsetree.Ast_408.Parsetree.module_type -> Migrate_parsetree.Ast_408.Parsetree.with_constraint list -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_typeof : Migrate_parsetree.Ast_408.Parsetree.module_expr -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.module_type
val pmty_alias : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.module_type
val module_type_declaration : name:string Ocaml_common.Location.loc -> type_:Migrate_parsetree.Ast_408.Parsetree.module_type option -> Migrate_parsetree.Ast_408.Parsetree.module_type_declaration
val otag : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.object_field
val oinherit : Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.object_field
val open_infos : expr:'a -> override:Migrate_parsetree.Ast_408.Asttypes.override_flag -> 'a Migrate_parsetree.Ast_408.Parsetree.open_infos
val ppat_any : Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_var : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_alias : Migrate_parsetree.Ast_408.Parsetree.pattern -> string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_constant : Migrate_parsetree.Ast_408.Parsetree.constant -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_interval : Migrate_parsetree.Ast_408.Parsetree.constant -> Migrate_parsetree.Ast_408.Parsetree.constant -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_tuple : Migrate_parsetree.Ast_408.Parsetree.pattern list -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_construct : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern option -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_variant : string -> Migrate_parsetree.Ast_408.Parsetree.pattern option -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_record : (Ocaml_common.Longident.t Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.pattern) list -> Migrate_parsetree.Ast_408.Asttypes.closed_flag -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_array : Migrate_parsetree.Ast_408.Parsetree.pattern list -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_or : Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_constraint : Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_type : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_lazy : Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_unpack : string Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_exception : Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.pattern
val ppat_open : Ocaml_common.Longident.t Ocaml_common.Location.loc -> Migrate_parsetree.Ast_408.Parsetree.pattern -> Migrate_parsetree.Ast_408.Parsetree.pattern
val position : fname:string -> lnum:int -> bol:int -> cnum:int -> Stdlib.Lexing.position
val rtag : string Ocaml_common.Location.loc -> bool -> Migrate_parsetree.Ast_408.Parsetree.core_type list -> Migrate_parsetree.Ast_408.Parsetree.row_field
val rinherit : Migrate_parsetree.Ast_408.Parsetree.core_type -> Migrate_parsetree.Ast_408.Parsetree.row_field
val psig_value : Migrate_parsetree.Ast_408.Parsetree.value_description -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_type : Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.type_declaration list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_typesubst : Migrate_parsetree.Ast_408.Parsetree.type_declaration list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_typext : Migrate_parsetree.Ast_408.Parsetree.type_extension -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_exception : Migrate_parsetree.Ast_408.Parsetree.type_exception -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_module : Migrate_parsetree.Ast_408.Parsetree.module_declaration -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_modsubst : Migrate_parsetree.Ast_408.Parsetree.module_substitution -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_recmodule : Migrate_parsetree.Ast_408.Parsetree.module_declaration list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_modtype : Migrate_parsetree.Ast_408.Parsetree.module_type_declaration -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_open : Ocaml_common.Longident.t Ocaml_common.Location.loc Migrate_parsetree.Ast_408.Parsetree.open_infos -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_include : Migrate_parsetree.Ast_408.Parsetree.module_type Migrate_parsetree.Ast_408.Parsetree.include_infos -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_class : Migrate_parsetree.Ast_408.Parsetree.class_type Migrate_parsetree.Ast_408.Parsetree.class_infos list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_class_type : Migrate_parsetree.Ast_408.Parsetree.class_type Migrate_parsetree.Ast_408.Parsetree.class_infos list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_attribute : Migrate_parsetree.Ast_408.Parsetree.attribute -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val psig_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.attribute list -> Migrate_parsetree.Ast_408.Parsetree.signature_item
val pstr_eval : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.attribute list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_value : Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.value_binding list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_primitive : Migrate_parsetree.Ast_408.Parsetree.value_description -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_type : Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.type_declaration list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_typext : Migrate_parsetree.Ast_408.Parsetree.type_extension -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_exception : Migrate_parsetree.Ast_408.Parsetree.type_exception -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_module : Migrate_parsetree.Ast_408.Parsetree.module_binding -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_recmodule : Migrate_parsetree.Ast_408.Parsetree.module_binding list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_modtype : Migrate_parsetree.Ast_408.Parsetree.module_type_declaration -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_open : Migrate_parsetree.Ast_408.Parsetree.module_expr Migrate_parsetree.Ast_408.Parsetree.open_infos -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_class : Migrate_parsetree.Ast_408.Parsetree.class_expr Migrate_parsetree.Ast_408.Parsetree.class_infos list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_class_type : Migrate_parsetree.Ast_408.Parsetree.class_type Migrate_parsetree.Ast_408.Parsetree.class_infos list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_include : Migrate_parsetree.Ast_408.Parsetree.module_expr Migrate_parsetree.Ast_408.Parsetree.include_infos -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_attribute : Migrate_parsetree.Ast_408.Parsetree.attribute -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val pstr_extension : (string Ocaml_common.Location.loc * Migrate_parsetree.Ast_408.Parsetree.payload) -> Migrate_parsetree.Ast_408.Parsetree.attribute list -> Migrate_parsetree.Ast_408.Parsetree.structure_item
val toplevel_directive : name:string Ocaml_common.Location.loc -> arg:Migrate_parsetree.Ast_408.Parsetree.directive_argument option -> Migrate_parsetree.Ast_408.Parsetree.toplevel_directive
val type_declaration : name:string Ocaml_common.Location.loc -> params:(Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Asttypes.variance) list -> cstrs:(Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Parsetree.core_type * Warnings.loc) list -> kind:Migrate_parsetree.Ast_408.Parsetree.type_kind -> private_:Migrate_parsetree.Ast_408.Asttypes.private_flag -> manifest:Migrate_parsetree.Ast_408.Parsetree.core_type option -> Migrate_parsetree.Ast_408.Parsetree.type_declaration
val type_exception : Migrate_parsetree.Ast_408.Parsetree.extension_constructor -> Migrate_parsetree.Ast_408.Parsetree.type_exception
val type_extension : path:Ocaml_common.Longident.t Ocaml_common.Location.loc -> params:(Migrate_parsetree.Ast_408.Parsetree.core_type * Migrate_parsetree.Ast_408.Asttypes.variance) list -> constructors:Migrate_parsetree.Ast_408.Parsetree.extension_constructor list -> private_:Migrate_parsetree.Ast_408.Asttypes.private_flag -> Migrate_parsetree.Ast_408.Parsetree.type_extension
val value_binding : pat:Migrate_parsetree.Ast_408.Parsetree.pattern -> expr:Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.value_binding
val value_description : name:string Ocaml_common.Location.loc -> type_:Migrate_parsetree.Ast_408.Parsetree.core_type -> prim:string list -> Migrate_parsetree.Ast_408.Parsetree.value_description
evar id
produces a Pexp_ident _
expression, it parses its input so you can pass any dot-separated identifier, for instance: evar ~loc "Foo.bar"
.
val pconstruct : Migrate_parsetree.Ast_408.Parsetree.constructor_declaration -> Migrate_parsetree.Ast_408.Parsetree.pattern Base.Option.t -> Migrate_parsetree.Ast_408.Parsetree.pattern
val econstruct : Migrate_parsetree.Ast_408.Parsetree.constructor_declaration -> Migrate_parsetree.Ast_408.Parsetree.expression Base.Option.t -> Migrate_parsetree.Ast_408.Parsetree.expression
val pstr_value_list : loc:Location.t -> Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.value_binding Base.List.t -> Migrate_parsetree.Ast_408.Parsetree.structure_item Base.List.t
pstr_value_list ~loc rf vbs
= pstr_value ~loc rf vbs
if vbs <> []
, []
otherwise.
unapplied_type_constr_conv
is the standard way to map identifiers to conversion fonctions, for preprocessor that creates values that follow the structure of types. More precisely, path_conv path (sprintf "sexp_of_%s")
is:
- sexp_of_t if path is "t"
- A.B.sexp_of_foo if path is "A.B.foo"
- A.B.sexp_of_f__foo (module A1) (module A2) if path is "A.B.F(A1)(A2).foo"
type_constr_conv
also applies it to a list of expression, which both prevents the compiler from allocating useless closures, and almost always what is needed, since type constructors are always applied.
val eta_reduce : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression Base.Option.t
Tries to simplify fun v1 v2 .. -> f v1 v2 ..
into f
. Only works when f
is a path, not an arbitrary expression as that would change the meaning of the code. This can be used either for cleaning up the generated code, or to reduce allocation if f
is a local variable (the compiler won't optimize the allocation of the closure).
Eta-reduction can change the types/behavior in some corner cases that are unlikely to show up in generated code:
- if
f
has optional arguments, eta-expandingf
can drop them - because labels commute, it can change the type of an expression: $ let f ~x y = x + y let f2 = fun x -> add x;; val f : x:int -> int -> int = <fun> val f2 : int -> x:int -> int = <fun> In fact, if
f
does side effects before receiving all its arguments, and if the eta-expansion is partially applied, eta-reducing could change behavior.
eta_reduce_if_possible_and_nonrec
is meant for the case where the resulting expression is going to be bound in a potentially recursive let-binding, where we have to keep the eta-expansion when rec_flag
is Recursive
to avoid a compile error.
val eta_reduce_if_possible : Migrate_parsetree.Ast_408.Parsetree.expression -> Migrate_parsetree.Ast_408.Parsetree.expression
val eta_reduce_if_possible_and_nonrec : Migrate_parsetree.Ast_408.Parsetree.expression -> rec_flag:Migrate_parsetree.Ast_408.Asttypes.rec_flag -> Migrate_parsetree.Ast_408.Parsetree.expression