Ast_builder.MakeSourceBuild Ast helpers with the location argument factorized.
include sig ... endval attribute :
name:string Astlib.Location.loc ->
payload:Astlib.Ast_500.Parsetree.payload ->
Astlib.Ast_500.Parsetree.attribute @@ statelessval binding_op :
op:string Astlib.Location.loc ->
pat:Astlib.Ast_500.Parsetree.pattern ->
exp:Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.binding_op @@ statelessval case :
lhs:Astlib.Ast_500.Parsetree.pattern ->
guard:Astlib.Ast_500.Parsetree.expression option ->
rhs:Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.case @@ statelessval pcl_constr :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_structure :
Astlib.Ast_500.Parsetree.class_structure ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_fun :
Astlib.Ast_500.Asttypes.arg_label ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.class_expr ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_apply :
Astlib.Ast_500.Parsetree.class_expr ->
(Astlib.Ast_500.Asttypes.arg_label * Astlib.Ast_500.Parsetree.expression)
list ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_let :
Astlib.Ast_500.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
Astlib.Ast_500.Parsetree.class_expr ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_constraint :
Astlib.Ast_500.Parsetree.class_expr ->
Astlib.Ast_500.Parsetree.class_type ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcl_open :
Astlib.Longident.t Astlib.Location.loc Astlib.Ast_500.Parsetree.open_infos ->
Astlib.Ast_500.Parsetree.class_expr ->
Astlib.Ast_500.Parsetree.class_expr @@ statelessval pcf_inherit :
Astlib.Ast_500.Asttypes.override_flag ->
Astlib.Ast_500.Parsetree.class_expr ->
string Astlib.Location.loc option ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_val :
(string Astlib.Location.loc
* Astlib.Ast_500.Asttypes.mutable_flag
* Astlib.Ast_500.Parsetree.class_field_kind) ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_method :
(string Astlib.Location.loc
* Astlib.Ast_500.Asttypes.private_flag
* Astlib.Ast_500.Parsetree.class_field_kind) ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_constraint :
(Astlib.Ast_500.Parsetree.core_type * Astlib.Ast_500.Parsetree.core_type) ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_initializer :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_attribute :
Astlib.Ast_500.Parsetree.attribute ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval pcf_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.class_field @@ statelessval class_infos :
virt:Astlib.Ast_500.Asttypes.virtual_flag ->
params:
(Astlib.Ast_500.Parsetree.core_type
* (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
list ->
name:string Astlib.Location.loc ->
expr:'a ->
'a Astlib.Ast_500.Parsetree.class_infos @@ statelessval class_signature :
self:Astlib.Ast_500.Parsetree.core_type ->
fields:Astlib.Ast_500.Parsetree.class_type_field list ->
Astlib.Ast_500.Parsetree.class_signature @@ statelessval class_structure :
self:Astlib.Ast_500.Parsetree.pattern ->
fields:Astlib.Ast_500.Parsetree.class_field list ->
Astlib.Ast_500.Parsetree.class_structure @@ statelessval pcty_constr :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.class_type @@ statelessval pcty_signature :
Astlib.Ast_500.Parsetree.class_signature ->
Astlib.Ast_500.Parsetree.class_type @@ statelessval pcty_arrow :
Astlib.Ast_500.Asttypes.arg_label ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.class_type ->
Astlib.Ast_500.Parsetree.class_type @@ statelessval pcty_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.class_type @@ statelessval pcty_open :
Astlib.Longident.t Astlib.Location.loc Astlib.Ast_500.Parsetree.open_infos ->
Astlib.Ast_500.Parsetree.class_type ->
Astlib.Ast_500.Parsetree.class_type @@ statelessval pctf_inherit :
Astlib.Ast_500.Parsetree.class_type ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval pctf_val :
(string Astlib.Location.loc
* Astlib.Ast_500.Asttypes.mutable_flag
* Astlib.Ast_500.Asttypes.virtual_flag
* Astlib.Ast_500.Parsetree.core_type) ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval pctf_method :
(string Astlib.Location.loc
* Astlib.Ast_500.Asttypes.private_flag
* Astlib.Ast_500.Asttypes.virtual_flag
* Astlib.Ast_500.Parsetree.core_type) ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval pctf_constraint :
(Astlib.Ast_500.Parsetree.core_type * Astlib.Ast_500.Parsetree.core_type) ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval pctf_attribute :
Astlib.Ast_500.Parsetree.attribute ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval pctf_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.class_type_field @@ statelessval comprehension :
body:Astlib.Ast_500.Parsetree.expression ->
clauses:Astlib.Ast_500.Parsetree.comprehension_clause list ->
Astlib.Ast_500.Parsetree.comprehension @@ statelessval comprehension_clause_binding :
cb_pattern:Astlib.Ast_500.Parsetree.pattern ->
cb_iterator:Astlib.Ast_500.Parsetree.comprehension_iterator ->
cb_attributes:Astlib.Ast_500.Parsetree.attribute list ->
Astlib.Ast_500.Parsetree.comprehension_clause_binding @@ statelessval constructor_argument :
modalities:Astlib.Ast_500.Parsetree.modality Astlib.Location.loc list ->
type_:Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.constructor_argument @@ statelessval ptyp_unboxed_tuple :
(string option * Astlib.Ast_500.Parsetree.core_type) list ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_constr :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_object :
Astlib.Ast_500.Parsetree.object_field list ->
Astlib.Ast_500.Asttypes.closed_flag ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_class :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_variant :
Astlib.Ast_500.Parsetree.row_field list ->
Astlib.Ast_500.Asttypes.closed_flag ->
string list option ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_newlayout :
string Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_package :
(Astlib.Longident.t Astlib.Location.loc
* (Astlib.Longident.t Astlib.Location.loc
* Astlib.Ast_500.Parsetree.core_type)
list) ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_quote :
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_splice :
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_of_kind :
Astlib.Ast_500.Parsetree.jkind_annotation ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_repr :
string Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval ptyp_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.core_type @@ statelessval pdir_int :
string ->
char option ->
Astlib.Ast_500.Parsetree.directive_argument @@ statelessval pdir_ident :
Astlib.Longident.t ->
Astlib.Ast_500.Parsetree.directive_argument @@ statelessval pexp_ident :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_constant :
Astlib.Ast_500.Parsetree.constant ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_match :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.case list ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_try :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.case list ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_unboxed_tuple :
(string option * Astlib.Ast_500.Parsetree.expression) list ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_construct :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_variant :
string ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_record :
(Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.expression)
list ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_record_unboxed_product :
(Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.expression)
list ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_field :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_unboxed_field :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_setfield :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_idx :
Astlib.Ast_500.Parsetree.block_access ->
Astlib.Ast_500.Parsetree.unboxed_access list ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_ifthenelse :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_sequence :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_while :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_coerce :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.core_type option ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_send :
Astlib.Ast_500.Parsetree.expression ->
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_new :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_setvar :
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_override :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.expression) list ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_letmodule :
string option Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_letexception :
Astlib.Ast_500.Parsetree.extension_constructor ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_assert :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_lazy :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_poly :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.core_type option ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_object :
Astlib.Ast_500.Parsetree.class_structure ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_pack :
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_open :
Astlib.Ast_500.Parsetree.module_expr Astlib.Ast_500.Parsetree.open_infos ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_letop :
Astlib.Ast_500.Parsetree.letop ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_stack :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_comprehension :
Astlib.Ast_500.Parsetree.comprehension_expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_overwrite :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_quote :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_splice :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval pexp_borrow :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression @@ statelessval extension_constructor :
name:string Astlib.Location.loc ->
kind:Astlib.Ast_500.Parsetree.extension_constructor_kind ->
Astlib.Ast_500.Parsetree.extension_constructor @@ statelessval function_constraint :
mode_annotations:Astlib.Ast_500.Parsetree.mode Astlib.Location.loc list ->
ret_mode_annotations:Astlib.Ast_500.Parsetree.mode Astlib.Location.loc list ->
ret_type_constraint:Astlib.Ast_500.Parsetree.type_constraint option ->
Astlib.Ast_500.Parsetree.function_constraint @@ statelessval pparam_val :
Astlib.Ast_500.Asttypes.arg_label ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.function_param @@ statelessval pparam_newtype :
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.jkind_annotation option ->
Astlib.Ast_500.Parsetree.function_param @@ statelessval pjk_abbreviation :
Astlib.Longident.t Astlib.Location.loc ->
string Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.jkind_annotation @@ statelessval pjk_mod :
Astlib.Ast_500.Parsetree.jkind_annotation ->
Astlib.Ast_500.Parsetree.mode Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.jkind_annotation @@ statelessval pjk_with :
Astlib.Ast_500.Parsetree.jkind_annotation ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.modality Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.jkind_annotation @@ statelessval pjk_kind_of :
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.jkind_annotation @@ statelessval pjk_product :
Astlib.Ast_500.Parsetree.jkind_annotation list ->
Astlib.Ast_500.Parsetree.jkind_annotation @@ statelessval jkind_declaration :
name:string Astlib.Location.loc ->
manifest:Astlib.Ast_500.Parsetree.jkind_annotation option ->
Astlib.Ast_500.Parsetree.jkind_declaration @@ statelessval letop :
let_:Astlib.Ast_500.Parsetree.binding_op ->
ands:Astlib.Ast_500.Parsetree.binding_op list ->
body:Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.letop @@ statelessval location :
start:Lexing.position ->
end_:Lexing.position ->
ghost:bool ->
Astlib.Location.t @@ statelessval module_binding :
name:string option Astlib.Location.loc ->
expr:Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_binding @@ statelessval pmod_ident :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_structure :
Astlib.Ast_500.Parsetree.structure_item list ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_functor :
Astlib.Ast_500.Parsetree.functor_parameter ->
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_apply :
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_unpack :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval pmod_instance :
Astlib.Ast_500.Parsetree.module_instance ->
Astlib.Ast_500.Parsetree.module_expr @@ statelessval module_instance :
instance_head:string ->
instance_args:(string * Astlib.Ast_500.Parsetree.module_instance) list ->
Astlib.Ast_500.Parsetree.module_instance @@ statelessval module_substitution :
name:string Astlib.Location.loc ->
manifest:Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_substitution @@ statelessval pmty_ident :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval pmty_with :
Astlib.Ast_500.Parsetree.module_type ->
Astlib.Ast_500.Parsetree.with_constraint list ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval pmty_typeof :
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval pmty_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval pmty_alias :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval pmty_strengthen :
Astlib.Ast_500.Parsetree.module_type ->
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.module_type @@ statelessval module_type_declaration :
name:string Astlib.Location.loc ->
type_:Astlib.Ast_500.Parsetree.module_type option ->
Astlib.Ast_500.Parsetree.module_type_declaration @@ statelessval otag :
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.object_field @@ statelessval oinherit :
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.object_field @@ statelessval open_infos :
expr:'a ->
override:Astlib.Ast_500.Asttypes.override_flag ->
'a Astlib.Ast_500.Parsetree.open_infos @@ statelessval ppat_alias :
Astlib.Ast_500.Parsetree.pattern ->
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_constant :
Astlib.Ast_500.Parsetree.constant ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_interval :
Astlib.Ast_500.Parsetree.constant ->
Astlib.Ast_500.Parsetree.constant ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_unboxed_tuple :
(string option * Astlib.Ast_500.Parsetree.pattern) list ->
Astlib.Ast_500.Asttypes.closed_flag ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_variant :
string ->
Astlib.Ast_500.Parsetree.pattern option ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_record :
(Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.pattern)
list ->
Astlib.Ast_500.Asttypes.closed_flag ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_record_unboxed_product :
(Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.pattern)
list ->
Astlib.Ast_500.Asttypes.closed_flag ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_or :
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_type :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_lazy :
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_unpack :
string option Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_exception :
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval ppat_open :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.pattern @@ statelessval position :
fname:string ->
lnum:int ->
bol:int ->
cnum:int ->
Lexing.position @@ statelessval rtag :
string Astlib.Location.loc ->
bool ->
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.row_field @@ statelessval rinherit :
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.row_field @@ statelessval psig_value :
Astlib.Ast_500.Parsetree.value_description ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_type :
Astlib.Ast_500.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.type_declaration list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_typesubst :
Astlib.Ast_500.Parsetree.type_declaration list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_typext :
Astlib.Ast_500.Parsetree.type_extension ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_exception :
Astlib.Ast_500.Parsetree.type_exception ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_module :
Astlib.Ast_500.Parsetree.module_declaration ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_modsubst :
Astlib.Ast_500.Parsetree.module_substitution ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_recmodule :
Astlib.Ast_500.Parsetree.module_declaration list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_modtype :
Astlib.Ast_500.Parsetree.module_type_declaration ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_modtypesubst :
Astlib.Ast_500.Parsetree.module_type_declaration ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_open :
Astlib.Longident.t Astlib.Location.loc Astlib.Ast_500.Parsetree.open_infos ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_class :
Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_class_type :
Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_attribute :
Astlib.Ast_500.Parsetree.attribute ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.attribute list ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval psig_jkind :
Astlib.Ast_500.Parsetree.jkind_declaration ->
Astlib.Ast_500.Parsetree.signature_item @@ statelessval pstr_eval :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.attribute list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_value :
Astlib.Ast_500.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_primitive :
Astlib.Ast_500.Parsetree.value_description ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_type :
Astlib.Ast_500.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.type_declaration list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_typext :
Astlib.Ast_500.Parsetree.type_extension ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_exception :
Astlib.Ast_500.Parsetree.type_exception ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_module :
Astlib.Ast_500.Parsetree.module_binding ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_recmodule :
Astlib.Ast_500.Parsetree.module_binding list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_modtype :
Astlib.Ast_500.Parsetree.module_type_declaration ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_open :
Astlib.Ast_500.Parsetree.module_expr Astlib.Ast_500.Parsetree.open_infos ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_class :
Astlib.Ast_500.Parsetree.class_expr Astlib.Ast_500.Parsetree.class_infos list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_class_type :
Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_include :
Astlib.Ast_500.Parsetree.module_expr Astlib.Ast_500.Parsetree.include_infos ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_attribute :
Astlib.Ast_500.Parsetree.attribute ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_extension :
(string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
Astlib.Ast_500.Parsetree.attribute list ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval pstr_jkind :
Astlib.Ast_500.Parsetree.jkind_declaration ->
Astlib.Ast_500.Parsetree.structure_item @@ statelessval toplevel_directive :
name:string Astlib.Location.loc ->
arg:Astlib.Ast_500.Parsetree.directive_argument option ->
Astlib.Ast_500.Parsetree.toplevel_directive @@ statelessval type_exception :
Astlib.Ast_500.Parsetree.extension_constructor ->
Astlib.Ast_500.Parsetree.type_exception @@ statelessval type_extension :
path:Astlib.Longident.t Astlib.Location.loc ->
params:
(Astlib.Ast_500.Parsetree.core_type
* (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
list ->
constructors:Astlib.Ast_500.Parsetree.extension_constructor list ->
private_:Astlib.Ast_500.Asttypes.private_flag ->
Astlib.Ast_500.Parsetree.type_extension @@ statelessevar 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 eapply :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expressionSame as pexp_apply but without labels
val eabstract :
Astlib.Ast_500.Parsetree.pattern list ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expressionval esequence :
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expressionval ppat_tuple_opt :
Astlib.Ast_500.Parsetree.pattern list ->
Astlib.Ast_500.Parsetree.pattern optionval pexp_tuple_opt :
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expression optionval pconstruct :
Astlib.Ast_500.Parsetree.constructor_declaration ->
Astlib.Ast_500.Parsetree.pattern option ->
Astlib.Ast_500.Parsetree.patternval econstruct :
Astlib.Ast_500.Parsetree.constructor_declaration ->
Astlib.Ast_500.Parsetree.expression option ->
Astlib.Ast_500.Parsetree.expressionval pstr_value_list :
loc:Location.t ->
Ppxlib_ast.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
Astlib.Ast_500.Parsetree.structure_item listpstr_value_list ~loc rf vbs = pstr_value ~loc rf vbs if vbs <> [], [] otherwise.
val nonrec_type_declaration :
name:string Loc.t ->
params:
(Astlib.Ast_500.Parsetree.core_type * Ppxlib_ast.Asttypes.variance) list ->
cstrs:
(Astlib.Ast_500.Parsetree.core_type
* Astlib.Ast_500.Parsetree.core_type
* Location.t)
list ->
kind:Astlib.Ast_500.Parsetree.type_kind ->
private_:Ppxlib_ast.Asttypes.private_flag ->
manifest:Astlib.Ast_500.Parsetree.core_type option ->
Astlib.Ast_500.Parsetree.type_declarationval unapplied_type_constr_conv :
Longident.t Loc.t ->
f:(string -> string) ->
Astlib.Ast_500.Parsetree.expressionunapplied_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:
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 type_constr_conv :
Longident.t Loc.t ->
f:(string -> string) ->
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expressionval eta_reduce :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression optionTries 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:
f has optional arguments, eta-expanding f can drop themf 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 :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expressionval eta_reduce_if_possible_and_nonrec :
Astlib.Ast_500.Parsetree.expression ->
rec_flag:Astlib.Ast_500.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.expressionval label_declaration :
name:string Astlib.Location.loc ->
mutable_:Astlib.Ast_500.Asttypes.mutable_flag ->
type_:Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.label_declarationval value_description :
name:string Astlib.Location.loc ->
type_:Astlib.Ast_500.Parsetree.core_type ->
prim:string list ->
Astlib.Ast_500.Parsetree.value_descriptionval ptyp_tuple :
Astlib.Ast_500.Parsetree.core_type list ->
Astlib.Ast_500.Parsetree.core_typeval pexp_constraint :
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.expressionval pexp_tuple :
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expressionval ppat_constraint :
Astlib.Ast_500.Parsetree.pattern ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.patternval value_binding :
pat:Astlib.Ast_500.Parsetree.pattern ->
expr:Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.value_bindingval include_infos :
?attrs:Astlib.Ast_500.Parsetree.attribute list ->
'a ->
'a Astlib.Ast_500.Parsetree.include_infosval pmty_signature :
Astlib.Ast_500.Parsetree.signature_item list ->
Astlib.Ast_500.Parsetree.module_typeval ptyp_alias :
Astlib.Ast_500.Parsetree.core_type ->
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.core_typeval ptyp_poly :
string Astlib.Location.loc list ->
Astlib.Ast_500.Parsetree.core_type ->
Astlib.Ast_500.Parsetree.core_typeval pexp_newtype :
string Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expressionval pexp_array :
Astlib.Ast_500.Parsetree.expression list ->
Astlib.Ast_500.Parsetree.expressionval type_declaration :
name:string Astlib.Location.loc ->
params:
(Astlib.Ast_500.Parsetree.core_type
* (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
list ->
cstrs:
(Astlib.Ast_500.Parsetree.core_type
* Astlib.Ast_500.Parsetree.core_type
* Astlib.Location.t)
list ->
kind:Astlib.Ast_500.Parsetree.type_kind ->
private_:Astlib.Ast_500.Asttypes.private_flag ->
manifest:Astlib.Ast_500.Parsetree.core_type option ->
Astlib.Ast_500.Parsetree.type_declarationval module_declaration :
name:string option Astlib.Location.loc ->
type_:Astlib.Ast_500.Parsetree.module_type ->
Astlib.Ast_500.Parsetree.module_declarationval pmod_constraint :
Astlib.Ast_500.Parsetree.module_expr ->
Astlib.Ast_500.Parsetree.module_type ->
Astlib.Ast_500.Parsetree.module_exprThis module contains updated versions of node constructors that were kept stable when the node changed. For every function in this module, there's an equally-named function outside this module. The function outside this module will stay stable, whereas the function inside this module will adapt potential upcoming new compiler features. Only use a function in this module, if the equally-named one outside this module is missing a feature you need.
val ppat_construct :
Astlib.Longident.t Astlib.Location.loc ->
Astlib.Ast_500.Parsetree.pattern option ->
Astlib.Ast_500.Parsetree.patternval constructor_declaration :
name:string Astlib.Location.loc ->
args:Astlib.Ast_500.Parsetree.constructor_arguments ->
res:Astlib.Ast_500.Parsetree.core_type option ->
Astlib.Ast_500.Parsetree.constructor_declaration