diff --git a/ppxlib/Astlib/Ast_502/Asttypes/index.html b/ppxlib/Astlib/Ast_502/Asttypes/index.html new file mode 100644 index 0000000..ad03219 --- /dev/null +++ b/ppxlib/Astlib/Ast_502/Asttypes/index.html @@ -0,0 +1,2 @@ + +
Ast_502.Asttypestype constant = | Const_int of int| Const_char of char| Const_string of string * Location.t * string option| Const_float of string| Const_int32 of int32| Const_int64 of int64| Const_nativeint of nativeintAst_502.ConfigAst_502.Parsetreetype constant = | Pconst_integer of string * char optionInteger constants such as 3 3l 3L 3n.
Suffixes [g-z][G-Z] are accepted by the parser. Suffixes except 'l', 'L' and 'n' are rejected by the typechecker
| Pconst_char of charCharacter such as 'c'.
| Pconst_string of string * Location.t * string optionConstant string such as "constant" or {delim|other constant|delim}.
The location span the content of the string, without the delimiters.
*)| Pconst_float of string * char optionFloat constant such as 3.4, 2e5 or 1.4e-4.
Suffixes g-zG-Z are accepted by the parser. Suffixes are rejected by the typechecker.
type location_stack = Location.t listAttributes such as [\@id ARG] and [\@\@id ARG].
Metadata containers passed around within the AST. The compiler ignores unknown attributes.
and extension = string Asttypes.loc * payloadExtension points such as [%id ARG] and [%%id ARG].
Sub-language placeholder -- rejected by the typechecker.
and attributes = attribute listand payload = | PStr of structure| PSig of signature: SIG in an attribute or an extension point
| PTyp of core_type: T in an attribute or an extension point
| PPat of pattern * expression option? P or ? P when E, in an attribute or an extension point
and core_type = {ptyp_desc : core_type_desc;ptyp_loc : Location.t;ptyp_loc_stack : location_stack;ptyp_attributes : attributes;... [\@id1] [\@id2]
}and core_type_desc = | Ptyp_any_
| Ptyp_var of stringA type variable such as 'a
| Ptyp_arrow of Asttypes.arg_label * core_type * core_type| Ptyp_tuple of core_type listPtyp_tuple([T1 ; ... ; Tn]) represents a product type T1 * ... * Tn.
Invariant: n >= 2.
| Ptyp_constr of Longident.t Asttypes.loc * core_type listPtyp_constr(lident, l) represents:
tconstr when l=[],T tconstr when l=[T],(T1, ..., Tn) tconstr when l=[T1 ; ... ; Tn].| Ptyp_object of object_field list * Asttypes.closed_flag| Ptyp_class of Longident.t Asttypes.loc * core_type listPtyp_class(tconstr, l) represents:
#tconstr when l=[],T #tconstr when l=[T],(T1, ..., Tn) #tconstr when l=[T1 ; ... ; Tn].| Ptyp_alias of core_type * string Asttypes.locT as 'a.
| Ptyp_variant of row_field list
+ * Asttypes.closed_flag
+ * Asttypes.label list option| Ptyp_poly of string Asttypes.loc list * core_type'a1 ... 'an. T
Can only appear in the following context:
core_type of a Ppat_constraint node corresponding to a constraint on a let-binding:let x : 'a1 ... 'an. T = e ...Cfk_virtual for methods (not values).core_type of a Pctf_method node.pld_type field of a label_declaration.core_type of a Ptyp_object node.pval_type field of a value_description.| Ptyp_package of package_type(module S).
| Ptyp_open of Longident.t Asttypes.loc * core_typeM.(T)
| Ptyp_extension of extension[%id].
and package_type =
+ Longident.t Asttypes.loc * (Longident.t Asttypes.loc * core_type) listAs package_type typed values:
(S, []) represents (module S),(S, [(t1, T1) ; ... ; (tn, Tn)]) represents (module S with type t1 = T1 and ... and tn = Tn).and row_field_desc = | Rtag of Asttypes.label Asttypes.loc * bool * core_type listRtag(`A, b, l) represents:
`A when b is true and l is [],`A of T when b is false and l is [T],`A of T1 & .. & Tn when b is false and l is [T1;...Tn],`A of & T1 & .. & Tn when b is true and l is [T1;...Tn].bool field is true if the tag contains a constant (empty) constructor.& occurs when several types are used for the same constructor (see 4.2 in the manual)| Rinherit of core_type[ | t ]
and pattern = {ppat_desc : pattern_desc;ppat_loc : Location.t;ppat_loc_stack : location_stack;ppat_attributes : attributes;... [\@id1] [\@id2]
}and pattern_desc = | Ppat_anyThe pattern _.
| Ppat_var of string Asttypes.locA variable pattern such as x
| Ppat_alias of pattern * string Asttypes.locAn alias pattern such as P as 'a
| Ppat_constant of constantPatterns such as 1, 'a', "true", 1.0, 1l, 1L, 1n
| Ppat_interval of constant * constantPatterns such as 'a'..'z'.
Other forms of interval are recognized by the parser but rejected by the type-checker.
*)| Ppat_tuple of pattern listPatterns (P1, ..., Pn).
Invariant: n >= 2
| Ppat_construct of Longident.t Asttypes.loc
+ * (string Asttypes.loc list * pattern) optionPpat_construct(C, args) represents:
C when args is None,C P when args is Some ([], P)C (P1, ..., Pn) when args is Some ([], Ppat_tuple [P1; ...; Pn])C (type a b) P when args is Some ([a; b], P)| Ppat_variant of Asttypes.label * pattern optionPpat_variant(`A, pat) represents:
`A when pat is None,`A P when pat is Some P| Ppat_record of (Longident.t Asttypes.loc * pattern) list * Asttypes.closed_flag| Ppat_array of pattern listPattern [| P1; ...; Pn |]
| Ppat_or of pattern * patternPattern P1 | P2
| Ppat_constraint of pattern * core_typePattern (P : T)
| Ppat_type of Longident.t Asttypes.locPattern #tconst
| Ppat_lazy of patternPattern lazy P
| Ppat_unpack of string option Asttypes.locPpat_unpack(s) represents:
(module P) when s is Some "P"(module _) when s is NoneNote: (module P : S) is represented as Ppat_constraint(Ppat_unpack(Some "P"), Ptyp_package S)
| Ppat_exception of patternPattern exception P
| Ppat_extension of extensionPattern [%id]
| Ppat_open of Longident.t Asttypes.loc * patternPattern M.(P)
and expression = {pexp_desc : expression_desc;pexp_loc : Location.t;pexp_loc_stack : location_stack;pexp_attributes : attributes;... [\@id1] [\@id2]
}and expression_desc = | Pexp_ident of Longident.t Asttypes.locIdentifiers such as x and M.x
| Pexp_constant of constantExpressions constant such as 1, 'a', "true", 1.0, 1l, 1L, 1n
| Pexp_let of Asttypes.rec_flag * value_binding list * expressionPexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E) represents:
let P1 = E1 and ... and Pn = EN in E when flag is Nonrecursive,let rec P1 = E1 and ... and Pn = EN in E when flag is Recursive.| Pexp_function of function_param list * type_constraint option * function_bodyPexp_function ([P1; ...; Pn], C, body) represents any construct involving fun or function, including:
fun P1 ... Pn -> E when body = Pfunction_body Efun P1 ... Pn -> function p1 -> e1 | ... | pm -> em when body = Pfunction_cases [ p1 -> e1; ...; pm -> em ] C represents a type constraint or coercion placed immediately before the arrow, e.g. fun P1 ... Pn : ty -> ... when C = Some (Pconstraint ty). A function must have parameters. Pexp_function (params, _, body) must have non-empty params or a Pfunction_cases _ body.| Pexp_apply of expression * (Asttypes.arg_label * expression) list| Pexp_match of expression * case listmatch E0 with P1 -> E1 | ... | Pn -> En
| Pexp_try of expression * case listtry E0 with P1 -> E1 | ... | Pn -> En
| Pexp_tuple of expression listExpressions (E1, ..., En)
Invariant: n >= 2
| Pexp_construct of Longident.t Asttypes.loc * expression optionPexp_construct(C, exp) represents:
C when exp is None,C E when exp is Some E,C (E1, ..., En) when exp is Some (Pexp_tuple[E1;...;En])| Pexp_variant of Asttypes.label * expression optionPexp_variant(`A, exp) represents
`A when exp is None`A E when exp is Some E| Pexp_record of (Longident.t Asttypes.loc * expression) list * expression optionPexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0) represents
{ l1=P1; ...; ln=Pn } when exp0 is None{ E0 with l1=P1; ...; ln=Pn } when exp0 is Some E0Invariant: n > 0
| Pexp_field of expression * Longident.t Asttypes.locE.l
| Pexp_setfield of expression * Longident.t Asttypes.loc * expressionE1.l <- E2
| Pexp_array of expression list[| E1; ...; En |]
| Pexp_ifthenelse of expression * expression * expression optionif E1 then E2 else E3
| Pexp_sequence of expression * expressionE1; E2
| Pexp_while of expression * expressionwhile E1 do E2 done
| Pexp_for of pattern
+ * expression
+ * expression
+ * Asttypes.direction_flag
+ * expression| Pexp_constraint of expression * core_type(E : T)
| Pexp_coerce of expression * core_type option * core_typePexp_coerce(E, from, T) represents
(E :> T) when from is None,(E : T0 :> T) when from is Some T0.| Pexp_send of expression * Asttypes.label Asttypes.locE # m
| Pexp_new of Longident.t Asttypes.locnew M.c
| Pexp_setinstvar of Asttypes.label Asttypes.loc * expressionx <- 2
| Pexp_override of (Asttypes.label Asttypes.loc * expression) list{< x1 = E1; ...; xn = En >}
| Pexp_letmodule of string option Asttypes.loc * module_expr * expressionlet module M = ME in E
| Pexp_letexception of extension_constructor * expressionlet exception C in E
| Pexp_assert of expressionassert E.
Note: assert false is treated in a special way by the type-checker.
| Pexp_lazy of expressionlazy E
| Pexp_poly of expression * core_type optionUsed for method bodies.
Can only be used as the expression under Cfk_concrete for methods (not values).
| Pexp_object of class_structureobject ... end
| Pexp_newtype of string Asttypes.loc * expressionfun (type t) -> E
| Pexp_pack of module_expr(module ME).
(module ME : S) is represented as Pexp_constraint(Pexp_pack ME, Ptyp_package S)
| Pexp_open of open_declaration * expressionM.(E)let open M in Elet open! M in E| Pexp_letop of letoplet* P = E0 in E1let* P0 = E00 and* P1 = E01 in E1| Pexp_extension of extension[%id]
| Pexp_unreachable.
Values of type case represents (P -> E) or (P when E0 -> E)
and binding_op = {pbop_op : string Asttypes.loc;pbop_pat : pattern;pbop_exp : expression;pbop_loc : Location.t;}and function_param_desc = | Pparam_val of Asttypes.arg_label * expression option * patternPparam_val (lbl, exp0, P) represents the parameter:
P when lbl is Nolabel and exp0 is None~l:P when lbl is Labelled l and exp0 is None?l:P when lbl is Optional l and exp0 is None?l:(P = E0) when lbl is Optional l and exp0 is Some E0Note: If E0 is provided, only Optional is allowed.
| Pparam_newtype of string Asttypes.locPparam_newtype x represents the parameter (type x). x carries the location of the identifier, whereas the pparam_loc on the enclosing function_param node is the location of the (type x) as a whole.
Multiple parameters (type a b c) are represented as multiple Pparam_newtype nodes, let's say:
[ { pparam_kind = Pparam_newtype a; pparam_loc = loc1 };
+ { pparam_kind = Pparam_newtype b; pparam_loc = loc2 };
+ { pparam_kind = Pparam_newtype c; pparam_loc = loc3 };
+]Here, the first loc loc1 is the location of (type a b c), and the subsequent locs loc2 and loc3 are the same as loc1, except marked as ghost locations. The locations on a, b, c, correspond to the variables a, b, and c in the source code.
and function_body = | Pfunction_body of expression| Pfunction_cases of case list * Location.t * attributesIn Pfunction_cases (_, loc, attrs), the location extends from the start of the function keyword to the end of the last case. The compiler will only use typechecking-related attributes from attrs, e.g. enabling or disabling a warning.
See the comment on Pexp_function.
and value_description = {pval_name : string Asttypes.loc;pval_type : core_type;pval_prim : string list;pval_attributes : attributes;... [\@\@id1] [\@\@id2]
pval_loc : Location.t;}Values of type value_description represents:
and type_declaration = {ptype_name : string Asttypes.loc;ptype_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;('a1,...'an) t
ptype_cstrs : (core_type * core_type * Location.t) list;... constraint T1=T1' ... constraint Tn=Tn'
ptype_kind : type_kind;ptype_private : Asttypes.private_flag;for = private ...
ptype_manifest : core_type option;represents = T
ptype_attributes : attributes;... [\@\@id1] [\@\@id2]
ptype_loc : Location.t;}Here are type declarations and their representation, for various ptype_kind and ptype_manifest values:
type t when type_kind is Ptype_abstract, and manifest is None,type t = T0 when type_kind is Ptype_abstract, and manifest is Some T0,type t = C of T | ... when type_kind is Ptype_variant, and manifest is None,type t = T0 = C of T | ... when type_kind is Ptype_variant, and manifest is Some T0,type t = {l: T; ...} when type_kind is Ptype_record, and manifest is None,type t = T0 = {l : T; ...} when type_kind is Ptype_record, and manifest is Some T0,type t = .. when type_kind is Ptype_open, and manifest is None.and type_kind = | Ptype_abstract| Ptype_variant of constructor_declaration list| Ptype_record of label_declaration listInvariant: non-empty list
*)| Ptype_openand label_declaration = {pld_name : string Asttypes.loc;pld_mutable : Asttypes.mutable_flag;pld_type : core_type;pld_loc : Location.t;pld_attributes : attributes;l : T [\@id1] [\@id2]
}{ ...; l: T; ... } when pld_mutable is Immutable,{ ...; mutable l: T; ... } when pld_mutable is Mutable.Note: T can be a Ptyp_poly.
and constructor_declaration = {pcd_name : string Asttypes.loc;pcd_vars : string Asttypes.loc list;pcd_args : constructor_arguments;pcd_res : core_type option;pcd_loc : Location.t;pcd_attributes : attributes;C of ... [\@id1] [\@id2]
}and constructor_arguments = | Pcstr_tuple of core_type list| Pcstr_record of label_declaration listValues of type constructor_declaration represents the constructor arguments of:
C of T1 * ... * Tn when res = None, and args = Pcstr_tuple [T1; ... ; Tn],C: T0 when res = Some T0, and args = Pcstr_tuple [],C: T1 * ... * Tn -> T0 when res = Some T0, and args = Pcstr_tuple [T1; ... ; Tn],C of {...} when res = None, and args = Pcstr_record [...],C: {...} -> T0 when res = Some T0, and args = Pcstr_record [...].and type_extension = {ptyext_path : Longident.t Asttypes.loc;ptyext_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;ptyext_constructors : extension_constructor list;ptyext_private : Asttypes.private_flag;ptyext_loc : Location.t;ptyext_attributes : attributes;... \@\@id1 \@\@id2
}Definition of new extensions constructors for the extensive sum type t (type t += ...).
and extension_constructor = {pext_name : string Asttypes.loc;pext_kind : extension_constructor_kind;pext_loc : Location.t;pext_attributes : attributes;C of ... [\@id1] [\@id2]
}and type_exception = {ptyexn_constructor : extension_constructor;ptyexn_loc : Location.t;ptyexn_attributes : attributes;... [\@\@id1] [\@\@id2]
}Definition of a new exception (exception E).
and extension_constructor_kind = | Pext_decl of string Asttypes.loc list
+ * constructor_arguments
+ * core_type optionPext_decl(existentials, c_args, t_opt) describes a new extension constructor. It can be:
C of T1 * ... * Tn when:
existentials is [],c_args is [T1; ...; Tn],t_opt is None.C: T0 when
existentials is [],c_args is [],t_opt is Some T0.C: T1 * ... * Tn -> T0 when
existentials is [],c_args is [T1; ...; Tn],t_opt is Some T0.C: 'a... . T1 * ... * Tn -> T0 when
existentials is ['a;...],c_args is [T1; ... ; Tn],t_opt is Some T0.| Pext_rebind of Longident.t Asttypes.locPext_rebind(D) re-export the constructor D with the new name C
and class_type = {pcty_desc : class_type_desc;pcty_loc : Location.t;pcty_attributes : attributes;... [\@id1] [\@id2]
}and class_type_desc = | Pcty_constr of Longident.t Asttypes.loc * core_type listc['a1, ..., 'an] c| Pcty_signature of class_signatureobject ... end
| Pcty_arrow of Asttypes.arg_label * core_type * class_typePcty_arrow(lbl, T, CT) represents:
T -> CT when lbl is Nolabel,~l:T -> CT when lbl is Labelled l,?l:T -> CT when lbl is Optional l.| Pcty_extension of extension%id
| Pcty_open of open_description * class_typelet open M in CT
Values of type class_signature represents:
object('selfpat) ... endobject ... end when pcsig_self is Ptyp_anyand class_type_field = {pctf_desc : class_type_field_desc;pctf_loc : Location.t;pctf_attributes : attributes;... [\@\@id1] [\@\@id2]
}and class_type_field_desc = | Pctf_inherit of class_typeinherit CT
| Pctf_val of Asttypes.label Asttypes.loc
+ * Asttypes.mutable_flag
+ * Asttypes.virtual_flag
+ * core_typeval x: T
| Pctf_method of Asttypes.label Asttypes.loc
+ * Asttypes.private_flag
+ * Asttypes.virtual_flag
+ * core_type| Pctf_constraint of core_type * core_typeconstraint T1 = T2
| Pctf_attribute of attribute[\@\@\@id]
| Pctf_extension of extension[%%id]
and 'a class_infos = {pci_virt : Asttypes.virtual_flag;pci_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;pci_name : string Asttypes.loc;pci_expr : 'a;pci_loc : Location.t;pci_attributes : attributes;... [\@\@id1] [\@\@id2]
}Values of type class_expr class_infos represents:
class c = ...class ['a1,...,'an] c = ...class virtual c = ...They are also used for "class type" declaration.
and class_description = class_type class_infosand class_type_declaration = class_type class_infosand class_expr = {pcl_desc : class_expr_desc;pcl_loc : Location.t;pcl_attributes : attributes;... [\@id1] [\@id2]
}and class_expr_desc = | Pcl_constr of Longident.t Asttypes.loc * core_type listc and ['a1, ..., 'an] c
| Pcl_structure of class_structureobject ... end
| Pcl_fun of Asttypes.arg_label * expression option * pattern * class_exprPcl_fun(lbl, exp0, P, CE) represents:
fun P -> CE when lbl is Nolabel and exp0 is None,fun ~l:P -> CE when lbl is Labelled l and exp0 is None,fun ?l:P -> CE when lbl is Optional l and exp0 is None,fun ?l:(P = E0) -> CE when lbl is Optional l and exp0 is Some E0.| Pcl_apply of class_expr * (Asttypes.arg_label * expression) listPcl_apply(CE, [(l1,E1) ; ... ; (ln,En)]) represents CE ~l1:E1 ... ~ln:En. li can be empty (non labeled argument) or start with ? (optional argument).
Invariant: n > 0
| Pcl_let of Asttypes.rec_flag * value_binding list * class_exprPcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE) represents:
let P1 = E1 and ... and Pn = EN in CE when rec is Nonrecursive,let rec P1 = E1 and ... and Pn = EN in CE when rec is Recursive.| Pcl_constraint of class_expr * class_type(CE : CT)
| Pcl_extension of extension[%id]
| Pcl_open of open_description * class_exprlet open M in CE
Values of type class_structure represents:
object(selfpat) ... endobject ... end when pcstr_self is Ppat_anyand class_field = {pcf_desc : class_field_desc;pcf_loc : Location.t;pcf_attributes : attributes;... [\@\@id1] [\@\@id2]
}and class_field_desc = | Pcf_inherit of Asttypes.override_flag * class_expr * string Asttypes.loc option| Pcf_val of Asttypes.label Asttypes.loc
+ * Asttypes.mutable_flag
+ * class_field_kindPcf_val(x,flag, kind) represents:
val x = E when flag is Immutable and kind is Cfk_concrete(Fresh, E)val virtual x: T when flag is Immutable and kind is Cfk_virtual(T)val mutable x = E when flag is Mutable and kind is Cfk_concrete(Fresh, E)val mutable virtual x: T when flag is Mutable and kind is Cfk_virtual(T)| Pcf_method of Asttypes.label Asttypes.loc
+ * Asttypes.private_flag
+ * class_field_kind| Pcf_constraint of core_type * core_typeconstraint T1 = T2
| Pcf_initializer of expressioninitializer E
| Pcf_attribute of attribute[\@\@\@id]
| Pcf_extension of extension[%%id]
and class_field_kind = | Cfk_virtual of core_type| Cfk_concrete of Asttypes.override_flag * expressionand class_declaration = class_expr class_infosand module_type = {pmty_desc : module_type_desc;pmty_loc : Location.t;pmty_attributes : attributes;... [\@id1] [\@id2]
}and module_type_desc = | Pmty_ident of Longident.t Asttypes.locPmty_ident(S) represents S
| Pmty_signature of signaturesig ... end
| Pmty_functor of functor_parameter * module_typefunctor(X : MT1) -> MT2
| Pmty_with of module_type * with_constraint listMT with ...
| Pmty_typeof of module_exprmodule type of ME
| Pmty_extension of extension[%id]
| Pmty_alias of Longident.t Asttypes.loc(module M)
and functor_parameter = | Unit()
| Named of string option Asttypes.loc * module_typeNamed(name, MT) represents:
(X : MT) when name is Some X,(_ : MT) when name is Noneand signature = signature_item listand signature_item_desc = | Psig_value of value_descriptionval x: Texternal x: T = "s1" ... "sn"| Psig_type of Asttypes.rec_flag * type_declaration listtype t1 = ... and ... and tn = ...
| Psig_typesubst of type_declaration listtype t1 := ... and ... and tn := ...
| Psig_typext of type_extensiontype t1 += ...
| Psig_exception of type_exceptionexception C of T
| Psig_module of module_declarationmodule X = M and module X : MT
| Psig_modsubst of module_substitutionmodule X := M
| Psig_recmodule of module_declaration listmodule rec X1 : MT1 and ... and Xn : MTn
| Psig_modtype of module_type_declarationmodule type S = MT and module type S
| Psig_modtypesubst of module_type_declarationmodule type S := ...
| Psig_open of open_descriptionopen X
| Psig_include of include_descriptioninclude MT
| Psig_class of class_description listclass c1 : ... and ... and cn : ...
| Psig_class_type of class_type_declaration listclass type ct1 = ... and ... and ctn = ...
| Psig_attribute of attribute[\@\@\@id]
| Psig_extension of extension * attributes[%%id]
and module_declaration = {pmd_name : string option Asttypes.loc;pmd_type : module_type;pmd_attributes : attributes;... [\@\@id1] [\@\@id2]
pmd_loc : Location.t;}Values of type module_declaration represents S : MT
and module_substitution = {pms_name : string Asttypes.loc;pms_manifest : Longident.t Asttypes.loc;pms_attributes : attributes;... [\@\@id1] [\@\@id2]
pms_loc : Location.t;}Values of type module_substitution represents S := M
and module_type_declaration = {pmtd_name : string Asttypes.loc;pmtd_type : module_type option;pmtd_attributes : attributes;... [\@\@id1] [\@\@id2]
pmtd_loc : Location.t;}Values of type module_type_declaration represents:
S = MT,S for abstract module type declaration, when pmtd_type is None.and 'a open_infos = {popen_expr : 'a;popen_override : Asttypes.override_flag;popen_loc : Location.t;popen_attributes : attributes;}Values of type 'a open_infos represents:
open! X when popen_override is Override (silences the "used identifier shadowing" warning)open X when popen_override is Freshand open_description = Longident.t Asttypes.loc open_infosValues of type open_description represents:
open M.Nopen M(N).Oand open_declaration = module_expr open_infosValues of type open_declaration represents:
open M.Nopen M(N).Oopen struct ... endand include_description = module_type include_infosValues of type include_description represents include MT
and include_declaration = module_expr include_infosValues of type include_declaration represents include ME
and with_constraint = | Pwith_type of Longident.t Asttypes.loc * type_declarationwith type X.t = ...
Note: the last component of the longident must match the name of the type_declaration.
*)| Pwith_module of Longident.t Asttypes.loc * Longident.t Asttypes.locwith module X.Y = Z
| Pwith_modtype of Longident.t Asttypes.loc * module_typewith module type X.Y = Z
| Pwith_modtypesubst of Longident.t Asttypes.loc * module_typewith module type X.Y := sig end
| Pwith_typesubst of Longident.t Asttypes.loc * type_declarationwith type X.t := ..., same format as [Pwith_type]
| Pwith_modsubst of Longident.t Asttypes.loc * Longident.t Asttypes.locwith module X.Y := Z
and module_expr = {pmod_desc : module_expr_desc;pmod_loc : Location.t;pmod_attributes : attributes;... [\@id1] [\@id2]
}and module_expr_desc = | Pmod_ident of Longident.t Asttypes.locX
| Pmod_structure of structurestruct ... end
| Pmod_functor of functor_parameter * module_exprfunctor(X : MT1) -> ME
| Pmod_apply of module_expr * module_exprME1(ME2)
| Pmod_apply_unit of module_exprME1()
| Pmod_constraint of module_expr * module_type(ME : MT)
| Pmod_unpack of expression(val E)
| Pmod_extension of extension[%id]
and structure = structure_item listand structure_item_desc = | Pstr_eval of expression * attributesE
| Pstr_value of Asttypes.rec_flag * value_binding listPstr_value(rec, [(P1, E1 ; ... ; (Pn, En))]) represents:
let P1 = E1 and ... and Pn = EN when rec is Nonrecursive,let rec P1 = E1 and ... and Pn = EN when rec is Recursive.| Pstr_primitive of value_descriptionval x: Texternal x: T = "s1" ... "sn" | Pstr_type of Asttypes.rec_flag * type_declaration listtype t1 = ... and ... and tn = ...
| Pstr_typext of type_extensiontype t1 += ...
| Pstr_exception of type_exceptionexception C of Texception C = M.X| Pstr_module of module_bindingmodule X = ME
| Pstr_recmodule of module_binding listmodule rec X1 = ME1 and ... and Xn = MEn
| Pstr_modtype of module_type_declarationmodule type S = MT
| Pstr_open of open_declarationopen X
| Pstr_class of class_declaration listclass c1 = ... and ... and cn = ...
| Pstr_class_type of class_type_declaration listclass type ct1 = ... and ... and ctn = ...
| Pstr_include of include_declarationinclude ME
| Pstr_attribute of attribute[\@\@\@id]
| Pstr_extension of extension * attributes[%%id]
and value_constraint = | Pvc_constraint of {locally_abstract_univars : string Asttypes.loc list;typ : core_type;}| Pvc_coercion of {}and value_binding = {pvb_pat : pattern;pvb_expr : expression;pvb_constraint : value_constraint option;pvb_attributes : attributes;pvb_loc : Location.t;}and module_binding = {pmb_name : string option Asttypes.loc;pmb_expr : module_expr;pmb_attributes : attributes;pmb_loc : Location.t;}Values of type module_binding represents module X = ME
and toplevel_directive = {pdir_name : string Asttypes.loc;pdir_arg : directive_argument option;pdir_loc : Location.t;}and directive_argument_desc = | Pdir_string of string| Pdir_int of string * char option| Pdir_ident of Longident.t| Pdir_bool of boolAstlib.Ast_502Ast_503.Asttypestype constant = | Const_int of int| Const_char of char| Const_string of string * Location.t * string option| Const_float of string| Const_int32 of int32| Const_int64 of int64| Const_nativeint of nativeintAst_503.ConfigAst_503.Parsetreeand constant_desc = | Pconst_integer of string * char optionInteger constants such as 3 3l 3L 3n.
Suffixes [g-z][G-Z] are accepted by the parser. Suffixes except 'l', 'L' and 'n' are rejected by the typechecker
| Pconst_char of charCharacter such as 'c'.
| Pconst_string of string * Location.t * string optionConstant string such as "constant" or {delim|other constant|delim}.
The location span the content of the string, without the delimiters.
*)| Pconst_float of string * char optionFloat constant such as 3.4, 2e5 or 1.4e-4.
Suffixes g-zG-Z are accepted by the parser. Suffixes are rejected by the typechecker.
type location_stack = Location.t listAttributes such as [\@id ARG] and [\@\@id ARG].
Metadata containers passed around within the AST. The compiler ignores unknown attributes.
and extension = string Asttypes.loc * payloadExtension points such as [%id ARG] and [%%id ARG].
Sub-language placeholder -- rejected by the typechecker.
and attributes = attribute listand payload = | PStr of structure| PSig of signature: SIG in an attribute or an extension point
| PTyp of core_type: T in an attribute or an extension point
| PPat of pattern * expression option? P or ? P when E, in an attribute or an extension point
and core_type = {ptyp_desc : core_type_desc;ptyp_loc : Location.t;ptyp_loc_stack : location_stack;ptyp_attributes : attributes;... [\@id1] [\@id2]
}and core_type_desc = | Ptyp_any_
| Ptyp_var of stringA type variable such as 'a
| Ptyp_arrow of Asttypes.arg_label * core_type * core_type| Ptyp_tuple of core_type listPtyp_tuple([T1 ; ... ; Tn]) represents a product type T1 * ... * Tn.
Invariant: n >= 2.
| Ptyp_constr of Longident.t Asttypes.loc * core_type listPtyp_constr(lident, l) represents:
tconstr when l=[],T tconstr when l=[T],(T1, ..., Tn) tconstr when l=[T1 ; ... ; Tn].| Ptyp_object of object_field list * Asttypes.closed_flag| Ptyp_class of Longident.t Asttypes.loc * core_type listPtyp_class(tconstr, l) represents:
#tconstr when l=[],T #tconstr when l=[T],(T1, ..., Tn) #tconstr when l=[T1 ; ... ; Tn].| Ptyp_alias of core_type * string Asttypes.locT as 'a.
| Ptyp_variant of row_field list
+ * Asttypes.closed_flag
+ * Asttypes.label list option| Ptyp_poly of string Asttypes.loc list * core_type'a1 ... 'an. T
Can only appear in the following context:
As the core_type of a Ppat_constraint node corresponding to a constraint on a let-binding:
let x : 'a1 ... 'an. T = e ...Cfk_virtual for methods (not values).core_type of a Pctf_method node.pld_type field of a label_declaration.core_type of a Ptyp_object node.pval_type field of a value_description.| Ptyp_package of package_type(module S).
| Ptyp_open of Longident.t Asttypes.loc * core_typeM.(T)
| Ptyp_extension of extension[%id].
and package_type =
+ Longident.t Asttypes.loc * (Longident.t Asttypes.loc * core_type) listAs package_type typed values:
(S, []) represents (module S),(S, [(t1, T1) ; ... ; (tn, Tn)]) represents (module S with type t1 = T1 and ... and tn = Tn).and row_field_desc = | Rtag of Asttypes.label Asttypes.loc * bool * core_type listRtag(`A, b, l) represents:
`A when b is true and l is [],`A of T when b is false and l is [T],`A of T1 & .. & Tn when b is false and l is [T1;...Tn],`A of & T1 & .. & Tn when b is true and l is [T1;...Tn].bool field is true if the tag contains a constant (empty) constructor.& occurs when several types are used for the same constructor (see 4.2 in the manual)| Rinherit of core_type[ | t ]
and pattern = {ppat_desc : pattern_desc;ppat_loc : Location.t;ppat_loc_stack : location_stack;ppat_attributes : attributes;... [\@id1] [\@id2]
}and pattern_desc = | Ppat_anyThe pattern _.
| Ppat_var of string Asttypes.locA variable pattern such as x
| Ppat_alias of pattern * string Asttypes.locAn alias pattern such as P as 'a
| Ppat_constant of constantPatterns such as 1, 'a', "true", 1.0, 1l, 1L, 1n
| Ppat_interval of constant * constantPatterns such as 'a'..'z'.
Other forms of interval are recognized by the parser but rejected by the type-checker.
*)| Ppat_tuple of pattern listPatterns (P1, ..., Pn).
Invariant: n >= 2
| Ppat_construct of Longident.t Asttypes.loc
+ * (string Asttypes.loc list * pattern) optionPpat_construct(C, args) represents:
C when args is None,C P when args is Some ([], P)C (P1, ..., Pn) when args is Some ([], Ppat_tuple [P1; ...; Pn])C (type a b) P when args is Some ([a; b], P)| Ppat_variant of Asttypes.label * pattern optionPpat_variant(`A, pat) represents:
`A when pat is None,`A P when pat is Some P| Ppat_record of (Longident.t Asttypes.loc * pattern) list * Asttypes.closed_flag| Ppat_array of pattern listPattern [| P1; ...; Pn |]
| Ppat_or of pattern * patternPattern P1 | P2
| Ppat_constraint of pattern * core_typePattern (P : T)
| Ppat_type of Longident.t Asttypes.locPattern #tconst
| Ppat_lazy of patternPattern lazy P
| Ppat_unpack of string option Asttypes.locPpat_unpack(s) represents:
(module P) when s is Some "P"(module _) when s is NoneNote: (module P : S) is represented as Ppat_constraint(Ppat_unpack(Some "P"), Ptyp_package S)
| Ppat_exception of patternPattern exception P
| Ppat_effect of pattern * pattern| Ppat_extension of extensionPattern [%id]
| Ppat_open of Longident.t Asttypes.loc * patternPattern M.(P)
and expression = {pexp_desc : expression_desc;pexp_loc : Location.t;pexp_loc_stack : location_stack;pexp_attributes : attributes;... [\@id1] [\@id2]
}and expression_desc = | Pexp_ident of Longident.t Asttypes.locIdentifiers such as x and M.x
| Pexp_constant of constantExpressions constant such as 1, 'a', "true", 1.0, 1l, 1L, 1n
| Pexp_let of Asttypes.rec_flag * value_binding list * expressionPexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E) represents:
let P1 = E1 and ... and Pn = EN in E when flag is Nonrecursive,let rec P1 = E1 and ... and Pn = EN in E when flag is Recursive.| Pexp_function of function_param list * type_constraint option * function_bodyPexp_function ([P1; ...; Pn], C, body) represents any construct involving fun or function, including:
fun P1 ... Pn -> E when body = Pfunction_body Efun P1 ... Pn -> function p1 -> e1 | ... | pm -> em when body = Pfunction_cases [ p1 -> e1; ...; pm -> em ]C represents a type constraint or coercion placed immediately before the arrow, e.g. fun P1 ... Pn : ty -> ... when C = Some (Pconstraint ty).
A function must have parameters. Pexp_function (params, _, body) must have non-empty params or a Pfunction_cases _ body.
| Pexp_apply of expression * (Asttypes.arg_label * expression) list| Pexp_match of expression * case listmatch E0 with P1 -> E1 | ... | Pn -> En
| Pexp_try of expression * case listtry E0 with P1 -> E1 | ... | Pn -> En
| Pexp_tuple of expression listExpressions (E1, ..., En)
Invariant: n >= 2
| Pexp_construct of Longident.t Asttypes.loc * expression optionPexp_construct(C, exp) represents:
C when exp is None,C E when exp is Some E,C (E1, ..., En) when exp is Some (Pexp_tuple[E1;...;En])| Pexp_variant of Asttypes.label * expression optionPexp_variant(`A, exp) represents
`A when exp is None`A E when exp is Some E| Pexp_record of (Longident.t Asttypes.loc * expression) list * expression optionPexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0) represents
{ l1=P1; ...; ln=Pn } when exp0 is None{ E0 with l1=P1; ...; ln=Pn } when exp0 is Some E0Invariant: n > 0
| Pexp_field of expression * Longident.t Asttypes.locE.l
| Pexp_setfield of expression * Longident.t Asttypes.loc * expressionE1.l <- E2
| Pexp_array of expression list[| E1; ...; En |]
| Pexp_ifthenelse of expression * expression * expression optionif E1 then E2 else E3
| Pexp_sequence of expression * expressionE1; E2
| Pexp_while of expression * expressionwhile E1 do E2 done
| Pexp_for of pattern
+ * expression
+ * expression
+ * Asttypes.direction_flag
+ * expression| Pexp_constraint of expression * core_type(E : T)
| Pexp_coerce of expression * core_type option * core_typePexp_coerce(E, from, T) represents
(E :> T) when from is None,(E : T0 :> T) when from is Some T0.| Pexp_send of expression * Asttypes.label Asttypes.locE # m
| Pexp_new of Longident.t Asttypes.locnew M.c
| Pexp_setinstvar of Asttypes.label Asttypes.loc * expressionx <- 2
| Pexp_override of (Asttypes.label Asttypes.loc * expression) list{< x1 = E1; ...; xn = En >}
| Pexp_letmodule of string option Asttypes.loc * module_expr * expressionlet module M = ME in E
| Pexp_letexception of extension_constructor * expressionlet exception C in E
| Pexp_assert of expressionassert E.
Note: assert false is treated in a special way by the type-checker.
| Pexp_lazy of expressionlazy E
| Pexp_poly of expression * core_type optionUsed for method bodies.
Can only be used as the expression under Cfk_concrete for methods (not values).
| Pexp_object of class_structureobject ... end
| Pexp_newtype of string Asttypes.loc * expressionfun (type t) -> E
| Pexp_pack of module_expr(module ME).
(module ME : S) is represented as Pexp_constraint(Pexp_pack ME, Ptyp_package S)
| Pexp_open of open_declaration * expressionM.(E)let open M in Elet open! M in E| Pexp_letop of letoplet* P = E0 in E1let* P0 = E00 and* P1 = E01 in E1| Pexp_extension of extension[%id]
| Pexp_unreachable.
Values of type case represents (P -> E) or (P when E0 -> E)
and binding_op = {pbop_op : string Asttypes.loc;pbop_pat : pattern;pbop_exp : expression;pbop_loc : Location.t;}and function_param_desc = | Pparam_val of Asttypes.arg_label * expression option * patternPparam_val (lbl, exp0, P) represents the parameter:
P when lbl is Nolabel and exp0 is None~l:P when lbl is Labelled l and exp0 is None?l:P when lbl is Optional l and exp0 is None?l:(P = E0) when lbl is Optional l and exp0 is Some E0Note: If E0 is provided, only Optional is allowed.
| Pparam_newtype of string Asttypes.locPparam_newtype x represents the parameter (type x). x carries the location of the identifier, whereas the pparam_loc on the enclosing function_param node is the location of the (type x) as a whole.
Multiple parameters (type a b c) are represented as multiple Pparam_newtype nodes, let's say:
[ { pparam_kind = Pparam_newtype a; pparam_loc = loc1 };
+ { pparam_kind = Pparam_newtype b; pparam_loc = loc2 };
+ { pparam_kind = Pparam_newtype c; pparam_loc = loc3 };
+]Here, the first loc loc1 is the location of (type a b c), and the subsequent locs loc2 and loc3 are the same as loc1, except marked as ghost locations. The locations on a, b, c, correspond to the variables a, b, and c in the source code.
and function_body = | Pfunction_body of expression| Pfunction_cases of case list * Location.t * attributesIn Pfunction_cases (_, loc, attrs), the location extends from the start of the function keyword to the end of the last case. The compiler will only use typechecking-related attributes from attrs, e.g. enabling or disabling a warning.
See the comment on Pexp_function.
and value_description = {pval_name : string Asttypes.loc;pval_type : core_type;pval_prim : string list;pval_attributes : attributes;... [\@\@id1] [\@\@id2]
pval_loc : Location.t;}Values of type value_description represents:
and type_declaration = {ptype_name : string Asttypes.loc;ptype_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;('a1,...'an) t
ptype_cstrs : (core_type * core_type * Location.t) list;... constraint T1=T1' ... constraint Tn=Tn'
ptype_kind : type_kind;ptype_private : Asttypes.private_flag;for = private ...
ptype_manifest : core_type option;represents = T
ptype_attributes : attributes;... [\@\@id1] [\@\@id2]
ptype_loc : Location.t;}Here are type declarations and their representation, for various ptype_kind and ptype_manifest values:
type t when type_kind is Ptype_abstract, and manifest is None,type t = T0 when type_kind is Ptype_abstract, and manifest is Some T0,type t = C of T | ... when type_kind is Ptype_variant, and manifest is None,type t = T0 = C of T | ... when type_kind is Ptype_variant, and manifest is Some T0,type t = {l: T; ...} when type_kind is Ptype_record, and manifest is None,type t = T0 = {l : T; ...} when type_kind is Ptype_record, and manifest is Some T0,type t = .. when type_kind is Ptype_open, and manifest is None.and type_kind = | Ptype_abstract| Ptype_variant of constructor_declaration list| Ptype_record of label_declaration listInvariant: non-empty list
*)| Ptype_openand label_declaration = {pld_name : string Asttypes.loc;pld_mutable : Asttypes.mutable_flag;pld_type : core_type;pld_loc : Location.t;pld_attributes : attributes;l : T [\@id1] [\@id2]
}{ ...; l: T; ... } when pld_mutable is Immutable,{ ...; mutable l: T; ... } when pld_mutable is Mutable.Note: T can be a Ptyp_poly.
and constructor_declaration = {pcd_name : string Asttypes.loc;pcd_vars : string Asttypes.loc list;pcd_args : constructor_arguments;pcd_res : core_type option;pcd_loc : Location.t;pcd_attributes : attributes;C of ... [\@id1] [\@id2]
}and constructor_arguments = | Pcstr_tuple of core_type list| Pcstr_record of label_declaration listValues of type constructor_declaration represents the constructor arguments of:
C of T1 * ... * Tn when res = None, and args = Pcstr_tuple [T1; ... ; Tn],C: T0 when res = Some T0, and args = Pcstr_tuple [],C: T1 * ... * Tn -> T0 when res = Some T0, and args = Pcstr_tuple [T1; ... ; Tn],C of {...} when res = None, and args = Pcstr_record [...],C: {...} -> T0 when res = Some T0, and args = Pcstr_record [...].and type_extension = {ptyext_path : Longident.t Asttypes.loc;ptyext_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;ptyext_constructors : extension_constructor list;ptyext_private : Asttypes.private_flag;ptyext_loc : Location.t;ptyext_attributes : attributes;... \@\@id1 \@\@id2
}Definition of new extensions constructors for the extensive sum type t (type t += ...).
and extension_constructor = {pext_name : string Asttypes.loc;pext_kind : extension_constructor_kind;pext_loc : Location.t;pext_attributes : attributes;C of ... [\@id1] [\@id2]
}and type_exception = {ptyexn_constructor : extension_constructor;ptyexn_loc : Location.t;ptyexn_attributes : attributes;... [\@\@id1] [\@\@id2]
}Definition of a new exception (exception E).
and extension_constructor_kind = | Pext_decl of string Asttypes.loc list
+ * constructor_arguments
+ * core_type optionPext_decl(existentials, c_args, t_opt) describes a new extension constructor. It can be:
C of T1 * ... * Tn when:
existentials is [],c_args is [T1; ...; Tn],t_opt is NoneC: T0 when
existentials is [],c_args is [],t_opt is Some T0.C: T1 * ... * Tn -> T0 when
existentials is [],c_args is [T1; ...; Tn],t_opt is Some T0.C: 'a... . T1 * ... * Tn -> T0 when
existentials is ['a;...],c_args is [T1; ... ; Tn],t_opt is Some T0.| Pext_rebind of Longident.t Asttypes.locPext_rebind(D) re-export the constructor D with the new name C
and class_type = {pcty_desc : class_type_desc;pcty_loc : Location.t;pcty_attributes : attributes;... [\@id1] [\@id2]
}and class_type_desc = | Pcty_constr of Longident.t Asttypes.loc * core_type listc['a1, ..., 'an] c| Pcty_signature of class_signatureobject ... end
| Pcty_arrow of Asttypes.arg_label * core_type * class_typePcty_arrow(lbl, T, CT) represents:
T -> CT when lbl is Nolabel,~l:T -> CT when lbl is Labelled l,?l:T -> CT when lbl is Optional l.| Pcty_extension of extension%id
| Pcty_open of open_description * class_typelet open M in CT
Values of type class_signature represents:
object('selfpat) ... endobject ... end when pcsig_self is Ptyp_anyand class_type_field = {pctf_desc : class_type_field_desc;pctf_loc : Location.t;pctf_attributes : attributes;... [\@\@id1] [\@\@id2]
}and class_type_field_desc = | Pctf_inherit of class_typeinherit CT
| Pctf_val of Asttypes.label Asttypes.loc
+ * Asttypes.mutable_flag
+ * Asttypes.virtual_flag
+ * core_typeval x: T
| Pctf_method of Asttypes.label Asttypes.loc
+ * Asttypes.private_flag
+ * Asttypes.virtual_flag
+ * core_type| Pctf_constraint of core_type * core_typeconstraint T1 = T2
| Pctf_attribute of attribute[\@\@\@id]
| Pctf_extension of extension[%%id]
and 'a class_infos = {pci_virt : Asttypes.virtual_flag;pci_params : (core_type * (Asttypes.variance * Asttypes.injectivity)) list;pci_name : string Asttypes.loc;pci_expr : 'a;pci_loc : Location.t;pci_attributes : attributes;... [\@\@id1] [\@\@id2]
}Values of type class_expr class_infos represents:
class c = ...class ['a1,...,'an] c = ...class virtual c = ...They are also used for "class type" declaration.
and class_description = class_type class_infosand class_type_declaration = class_type class_infosand class_expr = {pcl_desc : class_expr_desc;pcl_loc : Location.t;pcl_attributes : attributes;... [\@id1] [\@id2]
}and class_expr_desc = | Pcl_constr of Longident.t Asttypes.loc * core_type listc and ['a1, ..., 'an] c
| Pcl_structure of class_structureobject ... end
| Pcl_fun of Asttypes.arg_label * expression option * pattern * class_exprPcl_fun(lbl, exp0, P, CE) represents:
fun P -> CE when lbl is Nolabel and exp0 is None,fun ~l:P -> CE when lbl is Labelled l and exp0 is None,fun ?l:P -> CE when lbl is Optional l and exp0 is None,fun ?l:(P = E0) -> CE when lbl is Optional l and exp0 is Some E0.| Pcl_apply of class_expr * (Asttypes.arg_label * expression) listPcl_apply(CE, [(l1,E1) ; ... ; (ln,En)]) represents CE ~l1:E1 ... ~ln:En. li can be empty (non labeled argument) or start with ? (optional argument).
Invariant: n > 0
| Pcl_let of Asttypes.rec_flag * value_binding list * class_exprPcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE) represents:
let P1 = E1 and ... and Pn = EN in CE when rec is Nonrecursive,let rec P1 = E1 and ... and Pn = EN in CE when rec is Recursive.| Pcl_constraint of class_expr * class_type(CE : CT)
| Pcl_extension of extension[%id]
| Pcl_open of open_description * class_exprlet open M in CE
Values of type class_structure represents:
object(selfpat) ... endobject ... end when pcstr_self is Ppat_anyand class_field = {pcf_desc : class_field_desc;pcf_loc : Location.t;pcf_attributes : attributes;... [\@\@id1] [\@\@id2]
}and class_field_desc = | Pcf_inherit of Asttypes.override_flag * class_expr * string Asttypes.loc option| Pcf_val of Asttypes.label Asttypes.loc
+ * Asttypes.mutable_flag
+ * class_field_kindPcf_val(x,flag, kind) represents:
val x = E when flag is Immutable and kind is Cfk_concrete(Fresh, E)val virtual x: T when flag is Immutable and kind is Cfk_virtual(T)val mutable x = E when flag is Mutable and kind is Cfk_concrete(Fresh, E)val mutable virtual x: T when flag is Mutable and kind is Cfk_virtual(T)| Pcf_method of Asttypes.label Asttypes.loc
+ * Asttypes.private_flag
+ * class_field_kind| Pcf_constraint of core_type * core_typeconstraint T1 = T2
| Pcf_initializer of expressioninitializer E
| Pcf_attribute of attribute[\@\@\@id]
| Pcf_extension of extension[%%id]
and class_field_kind = | Cfk_virtual of core_type| Cfk_concrete of Asttypes.override_flag * expressionand class_declaration = class_expr class_infosand module_type = {pmty_desc : module_type_desc;pmty_loc : Location.t;pmty_attributes : attributes;... [\@id1] [\@id2]
}and module_type_desc = | Pmty_ident of Longident.t Asttypes.locPmty_ident(S) represents S
| Pmty_signature of signaturesig ... end
| Pmty_functor of functor_parameter * module_typefunctor(X : MT1) -> MT2
| Pmty_with of module_type * with_constraint listMT with ...
| Pmty_typeof of module_exprmodule type of ME
| Pmty_extension of extension[%id]
| Pmty_alias of Longident.t Asttypes.loc(module M)
and functor_parameter = | Unit()
| Named of string option Asttypes.loc * module_typeNamed(name, MT) represents:
(X : MT) when name is Some X,(_ : MT) when name is Noneand signature = signature_item listand signature_item_desc = | Psig_value of value_descriptionval x: Texternal x: T = "s1" ... "sn"| Psig_type of Asttypes.rec_flag * type_declaration listtype t1 = ... and ... and tn = ...
| Psig_typesubst of type_declaration listtype t1 := ... and ... and tn := ...
| Psig_typext of type_extensiontype t1 += ...
| Psig_exception of type_exceptionexception C of T
| Psig_module of module_declarationmodule X = M and module X : MT
| Psig_modsubst of module_substitutionmodule X := M
| Psig_recmodule of module_declaration listmodule rec X1 : MT1 and ... and Xn : MTn
| Psig_modtype of module_type_declarationmodule type S = MT and module type S
| Psig_modtypesubst of module_type_declarationmodule type S := ...
| Psig_open of open_descriptionopen X
| Psig_include of include_descriptioninclude MT
| Psig_class of class_description listclass c1 : ... and ... and cn : ...
| Psig_class_type of class_type_declaration listclass type ct1 = ... and ... and ctn = ...
| Psig_attribute of attribute[\@\@\@id]
| Psig_extension of extension * attributes[%%id]
and module_declaration = {pmd_name : string option Asttypes.loc;pmd_type : module_type;pmd_attributes : attributes;... [\@\@id1] [\@\@id2]
pmd_loc : Location.t;}Values of type module_declaration represents S : MT
and module_substitution = {pms_name : string Asttypes.loc;pms_manifest : Longident.t Asttypes.loc;pms_attributes : attributes;... [\@\@id1] [\@\@id2]
pms_loc : Location.t;}Values of type module_substitution represents S := M
and module_type_declaration = {pmtd_name : string Asttypes.loc;pmtd_type : module_type option;pmtd_attributes : attributes;... [\@\@id1] [\@\@id2]
pmtd_loc : Location.t;}Values of type module_type_declaration represents:
S = MT,S for abstract module type declaration, when pmtd_type is None.and 'a open_infos = {popen_expr : 'a;popen_override : Asttypes.override_flag;popen_loc : Location.t;popen_attributes : attributes;}Values of type 'a open_infos represents:
open! X when popen_override is Override (silences the "used identifier shadowing" warning)open X when popen_override is Freshand open_description = Longident.t Asttypes.loc open_infosValues of type open_description represents:
open M.Nopen M(N).Oand open_declaration = module_expr open_infosValues of type open_declaration represents:
open M.Nopen M(N).Oopen struct ... endand include_description = module_type include_infosValues of type include_description represents include MT
and include_declaration = module_expr include_infosValues of type include_declaration represents include ME
and with_constraint = | Pwith_type of Longident.t Asttypes.loc * type_declarationwith type X.t = ...
Note: the last component of the longident must match the name of the type_declaration.
*)| Pwith_module of Longident.t Asttypes.loc * Longident.t Asttypes.locwith module X.Y = Z
| Pwith_modtype of Longident.t Asttypes.loc * module_typewith module type X.Y = Z
| Pwith_modtypesubst of Longident.t Asttypes.loc * module_typewith module type X.Y := sig end
| Pwith_typesubst of Longident.t Asttypes.loc * type_declarationwith type X.t := ..., same format as [Pwith_type]
| Pwith_modsubst of Longident.t Asttypes.loc * Longident.t Asttypes.locwith module X.Y := Z
and module_expr = {pmod_desc : module_expr_desc;pmod_loc : Location.t;pmod_attributes : attributes;... [\@id1] [\@id2]
}and module_expr_desc = | Pmod_ident of Longident.t Asttypes.locX
| Pmod_structure of structurestruct ... end
| Pmod_functor of functor_parameter * module_exprfunctor(X : MT1) -> ME
| Pmod_apply of module_expr * module_exprME1(ME2)
| Pmod_apply_unit of module_exprME1()
| Pmod_constraint of module_expr * module_type(ME : MT)
| Pmod_unpack of expression(val E)
| Pmod_extension of extension[%id]
and structure = structure_item listand structure_item_desc = | Pstr_eval of expression * attributesE
| Pstr_value of Asttypes.rec_flag * value_binding listPstr_value(rec, [(P1, E1 ; ... ; (Pn, En))]) represents:
let P1 = E1 and ... and Pn = EN when rec is Nonrecursive,let rec P1 = E1 and ... and Pn = EN when rec is Recursive.| Pstr_primitive of value_descriptionval x: Texternal x: T = "s1" ... "sn" | Pstr_type of Asttypes.rec_flag * type_declaration listtype t1 = ... and ... and tn = ...
| Pstr_typext of type_extensiontype t1 += ...
| Pstr_exception of type_exceptionexception C of Texception C = M.X| Pstr_module of module_bindingmodule X = ME
| Pstr_recmodule of module_binding listmodule rec X1 = ME1 and ... and Xn = MEn
| Pstr_modtype of module_type_declarationmodule type S = MT
| Pstr_open of open_declarationopen X
| Pstr_class of class_declaration listclass c1 = ... and ... and cn = ...
| Pstr_class_type of class_type_declaration listclass type ct1 = ... and ... and ctn = ...
| Pstr_include of include_declarationinclude ME
| Pstr_attribute of attribute[\@\@\@id]
| Pstr_extension of extension * attributes[%%id]
and value_constraint = | Pvc_constraint of {locally_abstract_univars : string Asttypes.loc list;typ : core_type;}| Pvc_coercion of {}Pvc_constraint { locally_abstract_univars=[]; typ} is a simple type constraint on a value binding: let x : typPvc_constraint { locally_abstract_univars; typ} locally_abstract_univars is the list of locally abstract type variables in let x: type a ... . typ Pvc_coercion { ground=None; coercion } represents let x :> typPvc_coercion { ground=Some g; coercion } represents let x : g :> typand value_binding = {pvb_pat : pattern;pvb_expr : expression;pvb_constraint : value_constraint option;pvb_attributes : attributes;pvb_loc : Location.t;}let pat : type_constraint = exp
and module_binding = {pmb_name : string option Asttypes.loc;pmb_expr : module_expr;pmb_attributes : attributes;pmb_loc : Location.t;}Values of type module_binding represents module X = ME
and toplevel_directive = {pdir_name : string Asttypes.loc;pdir_arg : directive_argument option;pdir_loc : Location.t;}and directive_argument_desc = | Pdir_string of string| Pdir_int of string * char option| Pdir_ident of Longident.t| Pdir_bool of boolAstlib.Ast_503Astlib.LocationSource code locations (ranges of positions), used in parsetrees
type t = Ocaml_common.Location.t = {loc_start : Stdlib.Lexing.position;loc_end : Stdlib.Lexing.position;loc_ghost : bool;}The location type
A located type
module Error : sig ... endval none : tAn arbitrary value of type t; describes an empty ghost range.
val register_error_of_exn : (exn -> Error.t option) -> unitEach compiler module which defines a custom type of exception which can surface as a user-visible error should register a "printer" for this exception using register_error_of_exn. The result of the printer is an error value containing a location, a message, and optionally sub-messages (each of them being located as well).
exception Error of Error.tLocated exception.
val raise_errorf :
+Location (ppxlib.Astlib.Location) Module Astlib.Location
Source code locations (ranges of positions), used in parsetrees
type t = Ocaml_common.Location.t = {loc_start : Stdlib.Lexing.position;loc_end : Stdlib.Lexing.position;loc_ghost : bool;
}The location type
A located type
module Error : sig ... endval set_input_lexbuf : Stdlib.Lexing.lexbuf option -> unitSet the name of the input source, e.g. the file name.
val none : tAn arbitrary value of type t; describes an empty ghost range.
Automatically reporting errors for raised exceptions
val register_error_of_exn : (exn -> Error.t option) -> unitEach compiler module which defines a custom type of exception which can surface as a user-visible error should register a "printer" for this exception using register_error_of_exn. The result of the printer is an error value containing a location, a message, and optionally sub-messages (each of them being located as well).
exception Error of Error.tLocated exception.
val raise_errorf :
?loc:t ->
('a, Stdlib.Format.formatter, unit, 'b) format4 ->
'aRaise a located exception.
val report_exception : Stdlib.Format.formatter -> exn -> unitReport an exception on the given formatter
\ No newline at end of file
diff --git a/ppxlib/Astlib/Migrate_501_502/index.html b/ppxlib/Astlib/Migrate_501_502/index.html
new file mode 100644
index 0000000..3d05bda
--- /dev/null
+++ b/ppxlib/Astlib/Migrate_501_502/index.html
@@ -0,0 +1,154 @@
+
+Migrate_501_502 (ppxlib.Astlib.Migrate_501_502) Module Astlib.Migrate_501_502
module From = Ast_501module To = Ast_502val extract_attr :
+ string ->
+ Ast_501.Parsetree.attributes ->
+ Ast_501.Parsetree.payload option * Ast_501.Parsetree.attribute listLook for a particular attribute and remove it from the list. Attributes are used to make certain migrations round-trip. Returns None if the specified attribute is not found.
val migrate_ppx_context_load_path :
+ Ast_501.Parsetree.expression ->
+ Ast_501.Parsetree.expressionval migrate_ppx_context_fields :
+ (Longident.t Ast_501.Asttypes.loc * Ast_501.Parsetree.expression) list ->
+ (Longident.t Ast_501.Asttypes.loc * Ast_501.Parsetree.expression) listval migrate_ppx_context_payload :
+ Ast_501.Parsetree.payload ->
+ Ast_501.Parsetree.payloadval copy_toplevel_phrase :
+ Ast_501.Parsetree.toplevel_phrase ->
+ Ast_502.Parsetree.toplevel_phraseval copy_toplevel_directive :
+ Ast_501.Parsetree.toplevel_directive ->
+ Ast_502.Parsetree.toplevel_directiveval copy_directive_argument :
+ Ast_501.Parsetree.directive_argument ->
+ Ast_502.Parsetree.directive_argumentval copy_directive_argument_desc :
+ Ast_501.Parsetree.directive_argument_desc ->
+ Ast_502.Parsetree.directive_argument_descval copy_expression :
+ Ast_501.Parsetree.expression ->
+ Ast_502.Parsetree.expressionval copy_expression_desc :
+ Location.t ->
+ Ast_501.Parsetree.expression_desc ->
+ Ast_502.Parsetree.expression_descval copy_letop : Ast_501.Parsetree.letop -> Ast_502.Parsetree.letopval copy_binding_op :
+ Ast_501.Parsetree.binding_op ->
+ Ast_502.Parsetree.binding_opval copy_direction_flag :
+ Ast_501.Asttypes.direction_flag ->
+ Ast_502.Asttypes.direction_flagval copy_case : Ast_501.Parsetree.case -> Ast_502.Parsetree.caseval copy_value_binding :
+ Ast_501.Parsetree.value_binding ->
+ Ast_502.Parsetree.value_bindingval copy_pattern : Ast_501.Parsetree.pattern -> Ast_502.Parsetree.patternval copy_pattern_desc :
+ Ast_501.Parsetree.pattern_desc ->
+ Ast_502.Parsetree.pattern_descval copy_value_constraint :
+ Ast_501.Parsetree.value_constraint ->
+ Ast_502.Parsetree.value_constraintval copy_core_type : Ast_501.Parsetree.core_type -> Ast_502.Parsetree.core_typeval copy_location_stack :
+ Ast_501.Parsetree.location_stack ->
+ Ast_502.Parsetree.location_stackval copy_core_type_desc :
+ Ast_501.Parsetree.core_type_desc ->
+ Ast_502.Parsetree.core_type_descval copy_package_type :
+ Ast_501.Parsetree.package_type ->
+ Ast_502.Parsetree.package_typeval copy_row_field : Ast_501.Parsetree.row_field -> Ast_502.Parsetree.row_fieldval copy_row_field_desc :
+ Ast_501.Parsetree.row_field_desc ->
+ Ast_502.Parsetree.row_field_descval copy_object_field :
+ Ast_501.Parsetree.object_field ->
+ Ast_502.Parsetree.object_fieldval copy_attributes :
+ Ast_501.Parsetree.attributes ->
+ Ast_502.Parsetree.attributesval copy_attribute : Ast_501.Parsetree.attribute -> Ast_502.Parsetree.attributeval copy_payload : Ast_501.Parsetree.payload -> Ast_502.Parsetree.payloadval copy_structure : Ast_501.Parsetree.structure -> Ast_502.Parsetree.structureval copy_structure_item :
+ Ast_501.Parsetree.structure_item ->
+ Ast_502.Parsetree.structure_itemval copy_structure_item_desc :
+ Ast_501.Parsetree.structure_item_desc ->
+ Ast_502.Parsetree.structure_item_descval copy_include_declaration :
+ Ast_501.Parsetree.include_declaration ->
+ Ast_502.Parsetree.include_declarationval copy_class_declaration :
+ Ast_501.Parsetree.class_declaration ->
+ Ast_502.Parsetree.class_declarationval copy_class_expr :
+ Ast_501.Parsetree.class_expr ->
+ Ast_502.Parsetree.class_exprval copy_class_expr_desc :
+ Ast_501.Parsetree.class_expr_desc ->
+ Ast_502.Parsetree.class_expr_descval copy_class_structure :
+ Ast_501.Parsetree.class_structure ->
+ Ast_502.Parsetree.class_structureval copy_class_field :
+ Ast_501.Parsetree.class_field ->
+ Ast_502.Parsetree.class_fieldval copy_class_field_desc :
+ Ast_501.Parsetree.class_field_desc ->
+ Ast_502.Parsetree.class_field_descval copy_class_field_kind :
+ Ast_501.Parsetree.class_field_kind ->
+ Ast_502.Parsetree.class_field_kindval copy_open_declaration :
+ Ast_501.Parsetree.open_declaration ->
+ Ast_502.Parsetree.open_declarationval copy_module_binding :
+ Ast_501.Parsetree.module_binding ->
+ Ast_502.Parsetree.module_bindingval copy_module_expr :
+ Ast_501.Parsetree.module_expr ->
+ Ast_502.Parsetree.module_exprval copy_module_expr_desc :
+ Ast_501.Parsetree.module_expr_desc ->
+ Ast_502.Parsetree.module_expr_descval copy_functor_parameter :
+ Ast_501.Parsetree.functor_parameter ->
+ Ast_502.Parsetree.functor_parameterval copy_module_type :
+ Ast_501.Parsetree.module_type ->
+ Ast_502.Parsetree.module_typeval copy_module_type_desc :
+ Ast_501.Parsetree.module_type_desc ->
+ Ast_502.Parsetree.module_type_descval copy_with_constraint :
+ Ast_501.Parsetree.with_constraint ->
+ Ast_502.Parsetree.with_constraintval copy_signature : Ast_501.Parsetree.signature -> Ast_502.Parsetree.signatureval copy_signature_item :
+ Ast_501.Parsetree.signature_item ->
+ Ast_502.Parsetree.signature_itemval copy_signature_item_desc :
+ Ast_501.Parsetree.signature_item_desc ->
+ Ast_502.Parsetree.signature_item_descval copy_class_type_declaration :
+ Ast_501.Parsetree.class_type_declaration ->
+ Ast_502.Parsetree.class_type_declarationval copy_class_description :
+ Ast_501.Parsetree.class_description ->
+ Ast_502.Parsetree.class_descriptionval copy_class_type :
+ Ast_501.Parsetree.class_type ->
+ Ast_502.Parsetree.class_typeval copy_class_type_desc :
+ Ast_501.Parsetree.class_type_desc ->
+ Ast_502.Parsetree.class_type_descval copy_class_signature :
+ Ast_501.Parsetree.class_signature ->
+ Ast_502.Parsetree.class_signatureval copy_class_type_field :
+ Ast_501.Parsetree.class_type_field ->
+ Ast_502.Parsetree.class_type_fieldval copy_class_type_field_desc :
+ Ast_501.Parsetree.class_type_field_desc ->
+ Ast_502.Parsetree.class_type_field_descval copy_extension : Ast_501.Parsetree.extension -> Ast_502.Parsetree.extensionval copy_class_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_501.Parsetree.class_infos ->
+ 'g0 Ast_502.Parsetree.class_infosval copy_virtual_flag :
+ Ast_501.Asttypes.virtual_flag ->
+ Ast_502.Asttypes.virtual_flagval copy_include_description :
+ Ast_501.Parsetree.include_description ->
+ Ast_502.Parsetree.include_descriptionval copy_include_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_501.Parsetree.include_infos ->
+ 'g0 Ast_502.Parsetree.include_infosval copy_open_description :
+ Ast_501.Parsetree.open_description ->
+ Ast_502.Parsetree.open_descriptionval copy_open_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_501.Parsetree.open_infos ->
+ 'g0 Ast_502.Parsetree.open_infosval copy_override_flag :
+ Ast_501.Asttypes.override_flag ->
+ Ast_502.Asttypes.override_flagval copy_module_type_declaration :
+ Ast_501.Parsetree.module_type_declaration ->
+ Ast_502.Parsetree.module_type_declarationval copy_module_substitution :
+ Ast_501.Parsetree.module_substitution ->
+ Ast_502.Parsetree.module_substitutionval copy_module_declaration :
+ Ast_501.Parsetree.module_declaration ->
+ Ast_502.Parsetree.module_declarationval copy_type_exception :
+ Ast_501.Parsetree.type_exception ->
+ Ast_502.Parsetree.type_exceptionval copy_type_extension :
+ Ast_501.Parsetree.type_extension ->
+ Ast_502.Parsetree.type_extensionval copy_extension_constructor :
+ Ast_501.Parsetree.extension_constructor ->
+ Ast_502.Parsetree.extension_constructorval copy_extension_constructor_kind :
+ Ast_501.Parsetree.extension_constructor_kind ->
+ Ast_502.Parsetree.extension_constructor_kindval copy_type_declaration :
+ Ast_501.Parsetree.type_declaration ->
+ Ast_502.Parsetree.type_declarationval copy_private_flag :
+ Ast_501.Asttypes.private_flag ->
+ Ast_502.Asttypes.private_flagval copy_type_kind : Ast_501.Parsetree.type_kind -> Ast_502.Parsetree.type_kindval copy_constructor_declaration :
+ Ast_501.Parsetree.constructor_declaration ->
+ Ast_502.Parsetree.constructor_declarationval copy_constructor_arguments :
+ Ast_501.Parsetree.constructor_arguments ->
+ Ast_502.Parsetree.constructor_argumentsval copy_label_declaration :
+ Ast_501.Parsetree.label_declaration ->
+ Ast_502.Parsetree.label_declarationval copy_mutable_flag :
+ Ast_501.Asttypes.mutable_flag ->
+ Ast_502.Asttypes.mutable_flagval copy_injectivity :
+ Ast_501.Asttypes.injectivity ->
+ Ast_502.Asttypes.injectivityval copy_variance : Ast_501.Asttypes.variance -> Ast_502.Asttypes.varianceval copy_value_description :
+ Ast_501.Parsetree.value_description ->
+ Ast_502.Parsetree.value_descriptionval copy_object_field_desc :
+ Ast_501.Parsetree.object_field_desc ->
+ Ast_502.Parsetree.object_field_descval copy_arg_label : Ast_501.Asttypes.arg_label -> Ast_502.Asttypes.arg_labelval copy_closed_flag :
+ Ast_501.Asttypes.closed_flag ->
+ Ast_502.Asttypes.closed_flagval copy_label : Ast_501.Asttypes.label -> Ast_502.Asttypes.labelval copy_rec_flag : Ast_501.Asttypes.rec_flag -> Ast_502.Asttypes.rec_flagval copy_constant : Ast_501.Parsetree.constant -> Ast_502.Parsetree.constantval copy_Longident_t : Longident.t -> Longident.tval copy_loc :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_501.Asttypes.loc ->
+ 'g0 Ast_502.Asttypes.locval copy_location : Location.t -> Location.t
\ No newline at end of file
diff --git a/ppxlib/Astlib/Migrate_502_501/index.html b/ppxlib/Astlib/Migrate_502_501/index.html
new file mode 100644
index 0000000..3f74fac
--- /dev/null
+++ b/ppxlib/Astlib/Migrate_502_501/index.html
@@ -0,0 +1,154 @@
+
+Migrate_502_501 (ppxlib.Astlib.Migrate_502_501) Module Astlib.Migrate_502_501
module From = Ast_502module To = Ast_501val migration_error : Location.t -> string -> 'aval mk_ghost_attr : string -> Ast_501.Parsetree.attributeval concat_list_lit :
+ Ast_502.Parsetree.expression ->
+ Ast_502.Parsetree.expression ->
+ Ast_502.Parsetree.expressionval migrate_ppx_context_load_path :
+ Ast_502.Parsetree.expression ->
+ Ast_502.Parsetree.expressionval migrate_ppx_context_fields :
+ (Longident.t Ast_502.Asttypes.loc * Ast_502.Parsetree.expression) list ->
+ (Longident.t Ast_502.Asttypes.loc * Ast_502.Parsetree.expression) listval migrate_ppx_context_payload :
+ Ast_502.Parsetree.payload ->
+ Ast_502.Parsetree.payloadval copy_toplevel_phrase :
+ Ast_502.Parsetree.toplevel_phrase ->
+ Ast_501.Parsetree.toplevel_phraseval copy_toplevel_directive :
+ Ast_502.Parsetree.toplevel_directive ->
+ Ast_501.Parsetree.toplevel_directiveval copy_directive_argument :
+ Ast_502.Parsetree.directive_argument ->
+ Ast_501.Parsetree.directive_argumentval copy_directive_argument_desc :
+ Ast_502.Parsetree.directive_argument_desc ->
+ Ast_501.Parsetree.directive_argument_descval copy_expression :
+ Ast_502.Parsetree.expression ->
+ Ast_501.Parsetree.expressionval copy_expression_desc :
+ Ast_502.Parsetree.expression_desc ->
+ Ast_501.Parsetree.expression_descval copy_letop : Ast_502.Parsetree.letop -> Ast_501.Parsetree.letopval copy_binding_op :
+ Ast_502.Parsetree.binding_op ->
+ Ast_501.Parsetree.binding_opval copy_direction_flag :
+ Ast_502.Asttypes.direction_flag ->
+ Ast_501.Asttypes.direction_flagval copy_case : Ast_502.Parsetree.case -> Ast_501.Parsetree.caseval copy_value_binding :
+ Ast_502.Parsetree.value_binding ->
+ Ast_501.Parsetree.value_bindingval copy_pattern : Ast_502.Parsetree.pattern -> Ast_501.Parsetree.patternval copy_pattern_desc :
+ Ast_502.Parsetree.pattern_desc ->
+ Ast_501.Parsetree.pattern_descval copy_value_constraint :
+ Ast_502.Parsetree.value_constraint ->
+ Ast_501.Parsetree.value_constraintval copy_core_type : Ast_502.Parsetree.core_type -> Ast_501.Parsetree.core_typeval copy_location_stack :
+ Ast_502.Parsetree.location_stack ->
+ Ast_501.Parsetree.location_stackval copy_core_type_desc :
+ Location.t ->
+ Ast_502.Parsetree.core_type_desc ->
+ Ast_501.Parsetree.core_type_descval copy_package_type :
+ Ast_502.Parsetree.package_type ->
+ Ast_501.Parsetree.package_typeval copy_row_field : Ast_502.Parsetree.row_field -> Ast_501.Parsetree.row_fieldval copy_row_field_desc :
+ Ast_502.Parsetree.row_field_desc ->
+ Ast_501.Parsetree.row_field_descval copy_object_field :
+ Ast_502.Parsetree.object_field ->
+ Ast_501.Parsetree.object_fieldval copy_attributes :
+ Ast_502.Parsetree.attributes ->
+ Ast_501.Parsetree.attributesval copy_attribute : Ast_502.Parsetree.attribute -> Ast_501.Parsetree.attributeval copy_payload : Ast_502.Parsetree.payload -> Ast_501.Parsetree.payloadval copy_structure : Ast_502.Parsetree.structure -> Ast_501.Parsetree.structureval copy_structure_item :
+ Ast_502.Parsetree.structure_item ->
+ Ast_501.Parsetree.structure_itemval copy_structure_item_desc :
+ Ast_502.Parsetree.structure_item_desc ->
+ Ast_501.Parsetree.structure_item_descval copy_include_declaration :
+ Ast_502.Parsetree.include_declaration ->
+ Ast_501.Parsetree.include_declarationval copy_class_declaration :
+ Ast_502.Parsetree.class_declaration ->
+ Ast_501.Parsetree.class_declarationval copy_class_expr :
+ Ast_502.Parsetree.class_expr ->
+ Ast_501.Parsetree.class_exprval copy_class_expr_desc :
+ Ast_502.Parsetree.class_expr_desc ->
+ Ast_501.Parsetree.class_expr_descval copy_class_structure :
+ Ast_502.Parsetree.class_structure ->
+ Ast_501.Parsetree.class_structureval copy_class_field :
+ Ast_502.Parsetree.class_field ->
+ Ast_501.Parsetree.class_fieldval copy_class_field_desc :
+ Ast_502.Parsetree.class_field_desc ->
+ Ast_501.Parsetree.class_field_descval copy_class_field_kind :
+ Ast_502.Parsetree.class_field_kind ->
+ Ast_501.Parsetree.class_field_kindval copy_open_declaration :
+ Ast_502.Parsetree.open_declaration ->
+ Ast_501.Parsetree.open_declarationval copy_module_binding :
+ Ast_502.Parsetree.module_binding ->
+ Ast_501.Parsetree.module_bindingval copy_module_expr :
+ Ast_502.Parsetree.module_expr ->
+ Ast_501.Parsetree.module_exprval copy_module_expr_desc :
+ Ast_502.Parsetree.module_expr_desc ->
+ Ast_501.Parsetree.module_expr_descval copy_functor_parameter :
+ Ast_502.Parsetree.functor_parameter ->
+ Ast_501.Parsetree.functor_parameterval copy_module_type :
+ Ast_502.Parsetree.module_type ->
+ Ast_501.Parsetree.module_typeval copy_module_type_desc :
+ Ast_502.Parsetree.module_type_desc ->
+ Ast_501.Parsetree.module_type_descval copy_with_constraint :
+ Ast_502.Parsetree.with_constraint ->
+ Ast_501.Parsetree.with_constraintval copy_signature : Ast_502.Parsetree.signature -> Ast_501.Parsetree.signatureval copy_signature_item :
+ Ast_502.Parsetree.signature_item ->
+ Ast_501.Parsetree.signature_itemval copy_signature_item_desc :
+ Ast_502.Parsetree.signature_item_desc ->
+ Ast_501.Parsetree.signature_item_descval copy_class_type_declaration :
+ Ast_502.Parsetree.class_type_declaration ->
+ Ast_501.Parsetree.class_type_declarationval copy_class_description :
+ Ast_502.Parsetree.class_description ->
+ Ast_501.Parsetree.class_descriptionval copy_class_type :
+ Ast_502.Parsetree.class_type ->
+ Ast_501.Parsetree.class_typeval copy_class_type_desc :
+ Ast_502.Parsetree.class_type_desc ->
+ Ast_501.Parsetree.class_type_descval copy_class_signature :
+ Ast_502.Parsetree.class_signature ->
+ Ast_501.Parsetree.class_signatureval copy_class_type_field :
+ Ast_502.Parsetree.class_type_field ->
+ Ast_501.Parsetree.class_type_fieldval copy_class_type_field_desc :
+ Ast_502.Parsetree.class_type_field_desc ->
+ Ast_501.Parsetree.class_type_field_descval copy_extension : Ast_502.Parsetree.extension -> Ast_501.Parsetree.extensionval copy_class_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.class_infos ->
+ 'g0 Ast_501.Parsetree.class_infosval copy_virtual_flag :
+ Ast_502.Asttypes.virtual_flag ->
+ Ast_501.Asttypes.virtual_flagval copy_include_description :
+ Ast_502.Parsetree.include_description ->
+ Ast_501.Parsetree.include_descriptionval copy_include_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.include_infos ->
+ 'g0 Ast_501.Parsetree.include_infosval copy_open_description :
+ Ast_502.Parsetree.open_description ->
+ Ast_501.Parsetree.open_descriptionval copy_open_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.open_infos ->
+ 'g0 Ast_501.Parsetree.open_infosval copy_override_flag :
+ Ast_502.Asttypes.override_flag ->
+ Ast_501.Asttypes.override_flagval copy_module_type_declaration :
+ Ast_502.Parsetree.module_type_declaration ->
+ Ast_501.Parsetree.module_type_declarationval copy_module_substitution :
+ Ast_502.Parsetree.module_substitution ->
+ Ast_501.Parsetree.module_substitutionval copy_module_declaration :
+ Ast_502.Parsetree.module_declaration ->
+ Ast_501.Parsetree.module_declarationval copy_type_exception :
+ Ast_502.Parsetree.type_exception ->
+ Ast_501.Parsetree.type_exceptionval copy_type_extension :
+ Ast_502.Parsetree.type_extension ->
+ Ast_501.Parsetree.type_extensionval copy_extension_constructor :
+ Ast_502.Parsetree.extension_constructor ->
+ Ast_501.Parsetree.extension_constructorval copy_extension_constructor_kind :
+ Ast_502.Parsetree.extension_constructor_kind ->
+ Ast_501.Parsetree.extension_constructor_kindval copy_type_declaration :
+ Ast_502.Parsetree.type_declaration ->
+ Ast_501.Parsetree.type_declarationval copy_private_flag :
+ Ast_502.Asttypes.private_flag ->
+ Ast_501.Asttypes.private_flagval copy_type_kind : Ast_502.Parsetree.type_kind -> Ast_501.Parsetree.type_kindval copy_constructor_declaration :
+ Ast_502.Parsetree.constructor_declaration ->
+ Ast_501.Parsetree.constructor_declarationval copy_constructor_arguments :
+ Ast_502.Parsetree.constructor_arguments ->
+ Ast_501.Parsetree.constructor_argumentsval copy_label_declaration :
+ Ast_502.Parsetree.label_declaration ->
+ Ast_501.Parsetree.label_declarationval copy_mutable_flag :
+ Ast_502.Asttypes.mutable_flag ->
+ Ast_501.Asttypes.mutable_flagval copy_injectivity :
+ Ast_502.Asttypes.injectivity ->
+ Ast_501.Asttypes.injectivityval copy_variance : Ast_502.Asttypes.variance -> Ast_501.Asttypes.varianceval copy_value_description :
+ Ast_502.Parsetree.value_description ->
+ Ast_501.Parsetree.value_descriptionval copy_object_field_desc :
+ Ast_502.Parsetree.object_field_desc ->
+ Ast_501.Parsetree.object_field_descval copy_arg_label : Ast_502.Asttypes.arg_label -> Ast_501.Asttypes.arg_labelval copy_closed_flag :
+ Ast_502.Asttypes.closed_flag ->
+ Ast_501.Asttypes.closed_flagval copy_label : Ast_502.Asttypes.label -> Ast_501.Asttypes.labelval copy_rec_flag : Ast_502.Asttypes.rec_flag -> Ast_501.Asttypes.rec_flagval copy_constant : Ast_502.Parsetree.constant -> Ast_501.Parsetree.constantval copy_Longident_t : Longident.t -> Longident.tval copy_loc :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Asttypes.loc ->
+ 'g0 Ast_501.Asttypes.locval copy_location : Location.t -> Location.t
\ No newline at end of file
diff --git a/ppxlib/Astlib/Migrate_502_503/index.html b/ppxlib/Astlib/Migrate_502_503/index.html
new file mode 100644
index 0000000..9b44d26
--- /dev/null
+++ b/ppxlib/Astlib/Migrate_502_503/index.html
@@ -0,0 +1,152 @@
+
+Migrate_502_503 (ppxlib.Astlib.Migrate_502_503) Module Astlib.Migrate_502_503
module From = Ast_502module To = Ast_503val copy_toplevel_phrase :
+ Ast_502.Parsetree.toplevel_phrase ->
+ Ast_503.Parsetree.toplevel_phraseval copy_toplevel_directive :
+ Ast_502.Parsetree.toplevel_directive ->
+ Ast_503.Parsetree.toplevel_directiveval copy_directive_argument :
+ Ast_502.Parsetree.directive_argument ->
+ Ast_503.Parsetree.directive_argumentval copy_directive_argument_desc :
+ Ast_502.Parsetree.directive_argument_desc ->
+ Ast_503.Parsetree.directive_argument_descval copy_expression :
+ Ast_502.Parsetree.expression ->
+ Ast_503.Parsetree.expressionval copy_expression_desc :
+ Ast_502.Parsetree.expression_desc ->
+ Ast_503.Parsetree.expression_descval copy_letop : Ast_502.Parsetree.letop -> Ast_503.Parsetree.letopval copy_binding_op :
+ Ast_502.Parsetree.binding_op ->
+ Ast_503.Parsetree.binding_opval copy_function_param_desc :
+ Ast_502.Parsetree.function_param_desc ->
+ Ast_503.Parsetree.function_param_descval copy_function_param :
+ Ast_502.Parsetree.function_param ->
+ Ast_503.Parsetree.function_paramval copy_function_body :
+ Ast_502.Parsetree.function_body ->
+ Ast_503.Parsetree.function_bodyval copy_type_constraint :
+ Ast_502.Parsetree.type_constraint ->
+ Ast_503.Parsetree.type_constraintval copy_direction_flag :
+ Ast_502.Asttypes.direction_flag ->
+ Ast_503.Asttypes.direction_flagval copy_case : Ast_502.Parsetree.case -> Ast_503.Parsetree.caseval copy_value_binding :
+ Ast_502.Parsetree.value_binding ->
+ Ast_503.Parsetree.value_bindingval copy_pattern : Ast_502.Parsetree.pattern -> Ast_503.Parsetree.patternval copy_pattern_desc :
+ Ast_502.Parsetree.pattern_desc ->
+ Ast_503.Parsetree.pattern_descval copy_value_constraint :
+ Ast_502.Parsetree.value_constraint ->
+ Ast_503.Parsetree.value_constraintval copy_core_type : Ast_502.Parsetree.core_type -> Ast_503.Parsetree.core_typeval copy_location_stack :
+ Ast_502.Parsetree.location_stack ->
+ Ast_503.Parsetree.location_stackval copy_core_type_desc :
+ Ast_502.Parsetree.core_type_desc ->
+ Ast_503.Parsetree.core_type_descval copy_package_type :
+ Ast_502.Parsetree.package_type ->
+ Ast_503.Parsetree.package_typeval copy_row_field : Ast_502.Parsetree.row_field -> Ast_503.Parsetree.row_fieldval copy_row_field_desc :
+ Ast_502.Parsetree.row_field_desc ->
+ Ast_503.Parsetree.row_field_descval copy_object_field :
+ Ast_502.Parsetree.object_field ->
+ Ast_503.Parsetree.object_fieldval copy_attributes :
+ Ast_502.Parsetree.attributes ->
+ Ast_503.Parsetree.attributesval copy_attribute : Ast_502.Parsetree.attribute -> Ast_503.Parsetree.attributeval copy_payload : Ast_502.Parsetree.payload -> Ast_503.Parsetree.payloadval copy_structure : Ast_502.Parsetree.structure -> Ast_503.Parsetree.structureval copy_structure_item :
+ Ast_502.Parsetree.structure_item ->
+ Ast_503.Parsetree.structure_itemval copy_structure_item_desc :
+ Ast_502.Parsetree.structure_item_desc ->
+ Ast_503.Parsetree.structure_item_descval copy_include_declaration :
+ Ast_502.Parsetree.include_declaration ->
+ Ast_503.Parsetree.include_declarationval copy_class_declaration :
+ Ast_502.Parsetree.class_declaration ->
+ Ast_503.Parsetree.class_declarationval copy_class_expr :
+ Ast_502.Parsetree.class_expr ->
+ Ast_503.Parsetree.class_exprval copy_class_expr_desc :
+ Ast_502.Parsetree.class_expr_desc ->
+ Ast_503.Parsetree.class_expr_descval copy_class_structure :
+ Ast_502.Parsetree.class_structure ->
+ Ast_503.Parsetree.class_structureval copy_class_field :
+ Ast_502.Parsetree.class_field ->
+ Ast_503.Parsetree.class_fieldval copy_class_field_desc :
+ Ast_502.Parsetree.class_field_desc ->
+ Ast_503.Parsetree.class_field_descval copy_class_field_kind :
+ Ast_502.Parsetree.class_field_kind ->
+ Ast_503.Parsetree.class_field_kindval copy_open_declaration :
+ Ast_502.Parsetree.open_declaration ->
+ Ast_503.Parsetree.open_declarationval copy_module_binding :
+ Ast_502.Parsetree.module_binding ->
+ Ast_503.Parsetree.module_bindingval copy_module_expr :
+ Ast_502.Parsetree.module_expr ->
+ Ast_503.Parsetree.module_exprval copy_module_expr_desc :
+ Ast_502.Parsetree.module_expr_desc ->
+ Ast_503.Parsetree.module_expr_descval copy_functor_parameter :
+ Ast_502.Parsetree.functor_parameter ->
+ Ast_503.Parsetree.functor_parameterval copy_module_type :
+ Ast_502.Parsetree.module_type ->
+ Ast_503.Parsetree.module_typeval copy_module_type_desc :
+ Ast_502.Parsetree.module_type_desc ->
+ Ast_503.Parsetree.module_type_descval copy_with_constraint :
+ Ast_502.Parsetree.with_constraint ->
+ Ast_503.Parsetree.with_constraintval copy_signature : Ast_502.Parsetree.signature -> Ast_503.Parsetree.signatureval copy_signature_item :
+ Ast_502.Parsetree.signature_item ->
+ Ast_503.Parsetree.signature_itemval copy_signature_item_desc :
+ Ast_502.Parsetree.signature_item_desc ->
+ Ast_503.Parsetree.signature_item_descval copy_class_type_declaration :
+ Ast_502.Parsetree.class_type_declaration ->
+ Ast_503.Parsetree.class_type_declarationval copy_class_description :
+ Ast_502.Parsetree.class_description ->
+ Ast_503.Parsetree.class_descriptionval copy_class_type :
+ Ast_502.Parsetree.class_type ->
+ Ast_503.Parsetree.class_typeval copy_class_type_desc :
+ Ast_502.Parsetree.class_type_desc ->
+ Ast_503.Parsetree.class_type_descval copy_class_signature :
+ Ast_502.Parsetree.class_signature ->
+ Ast_503.Parsetree.class_signatureval copy_class_type_field :
+ Ast_502.Parsetree.class_type_field ->
+ Ast_503.Parsetree.class_type_fieldval copy_class_type_field_desc :
+ Ast_502.Parsetree.class_type_field_desc ->
+ Ast_503.Parsetree.class_type_field_descval copy_extension : Ast_502.Parsetree.extension -> Ast_503.Parsetree.extensionval copy_class_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.class_infos ->
+ 'g0 Ast_503.Parsetree.class_infosval copy_virtual_flag :
+ Ast_502.Asttypes.virtual_flag ->
+ Ast_503.Asttypes.virtual_flagval copy_include_description :
+ Ast_502.Parsetree.include_description ->
+ Ast_503.Parsetree.include_descriptionval copy_include_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.include_infos ->
+ 'g0 Ast_503.Parsetree.include_infosval copy_open_description :
+ Ast_502.Parsetree.open_description ->
+ Ast_503.Parsetree.open_descriptionval copy_open_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Parsetree.open_infos ->
+ 'g0 Ast_503.Parsetree.open_infosval copy_override_flag :
+ Ast_502.Asttypes.override_flag ->
+ Ast_503.Asttypes.override_flagval copy_module_type_declaration :
+ Ast_502.Parsetree.module_type_declaration ->
+ Ast_503.Parsetree.module_type_declarationval copy_module_substitution :
+ Ast_502.Parsetree.module_substitution ->
+ Ast_503.Parsetree.module_substitutionval copy_module_declaration :
+ Ast_502.Parsetree.module_declaration ->
+ Ast_503.Parsetree.module_declarationval copy_type_exception :
+ Ast_502.Parsetree.type_exception ->
+ Ast_503.Parsetree.type_exceptionval copy_type_extension :
+ Ast_502.Parsetree.type_extension ->
+ Ast_503.Parsetree.type_extensionval copy_extension_constructor :
+ Ast_502.Parsetree.extension_constructor ->
+ Ast_503.Parsetree.extension_constructorval copy_extension_constructor_kind :
+ Ast_502.Parsetree.extension_constructor_kind ->
+ Ast_503.Parsetree.extension_constructor_kindval copy_type_declaration :
+ Ast_502.Parsetree.type_declaration ->
+ Ast_503.Parsetree.type_declarationval copy_private_flag :
+ Ast_502.Asttypes.private_flag ->
+ Ast_503.Asttypes.private_flagval copy_type_kind : Ast_502.Parsetree.type_kind -> Ast_503.Parsetree.type_kindval copy_constructor_declaration :
+ Ast_502.Parsetree.constructor_declaration ->
+ Ast_503.Parsetree.constructor_declarationval copy_constructor_arguments :
+ Ast_502.Parsetree.constructor_arguments ->
+ Ast_503.Parsetree.constructor_argumentsval copy_label_declaration :
+ Ast_502.Parsetree.label_declaration ->
+ Ast_503.Parsetree.label_declarationval copy_mutable_flag :
+ Ast_502.Asttypes.mutable_flag ->
+ Ast_503.Asttypes.mutable_flagval copy_injectivity :
+ Ast_502.Asttypes.injectivity ->
+ Ast_503.Asttypes.injectivityval copy_variance : Ast_502.Asttypes.variance -> Ast_503.Asttypes.varianceval copy_value_description :
+ Ast_502.Parsetree.value_description ->
+ Ast_503.Parsetree.value_descriptionval copy_object_field_desc :
+ Ast_502.Parsetree.object_field_desc ->
+ Ast_503.Parsetree.object_field_descval copy_arg_label : Ast_502.Asttypes.arg_label -> Ast_503.Asttypes.arg_labelval copy_closed_flag :
+ Ast_502.Asttypes.closed_flag ->
+ Ast_503.Asttypes.closed_flagval copy_label : Ast_502.Asttypes.label -> Ast_503.Asttypes.labelval copy_rec_flag : Ast_502.Asttypes.rec_flag -> Ast_503.Asttypes.rec_flagval copy_constant : Ast_502.Parsetree.constant -> Ast_503.Parsetree.constantval copy_Longident_t : Longident.t -> Longident.tval copy_loc :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_502.Asttypes.loc ->
+ 'g0 Ast_503.Asttypes.locval copy_location : Location.t -> Location.t
\ No newline at end of file
diff --git a/ppxlib/Astlib/Migrate_503_502/index.html b/ppxlib/Astlib/Migrate_503_502/index.html
new file mode 100644
index 0000000..983a346
--- /dev/null
+++ b/ppxlib/Astlib/Migrate_503_502/index.html
@@ -0,0 +1,153 @@
+
+Migrate_503_502 (ppxlib.Astlib.Migrate_503_502) Module Astlib.Migrate_503_502
module From = Ast_503module To = Ast_502val migration_error : Location.t -> string -> 'aval copy_toplevel_phrase :
+ Ast_503.Parsetree.toplevel_phrase ->
+ Ast_502.Parsetree.toplevel_phraseval copy_toplevel_directive :
+ Ast_503.Parsetree.toplevel_directive ->
+ Ast_502.Parsetree.toplevel_directiveval copy_directive_argument :
+ Ast_503.Parsetree.directive_argument ->
+ Ast_502.Parsetree.directive_argumentval copy_directive_argument_desc :
+ Ast_503.Parsetree.directive_argument_desc ->
+ Ast_502.Parsetree.directive_argument_descval copy_expression :
+ Ast_503.Parsetree.expression ->
+ Ast_502.Parsetree.expressionval copy_expression_desc :
+ Ast_503.Parsetree.expression_desc ->
+ Ast_502.Parsetree.expression_descval copy_letop : Ast_503.Parsetree.letop -> Ast_502.Parsetree.letopval copy_binding_op :
+ Ast_503.Parsetree.binding_op ->
+ Ast_502.Parsetree.binding_opval copy_function_param_desc :
+ Ast_503.Parsetree.function_param_desc ->
+ Ast_502.Parsetree.function_param_descval copy_function_param :
+ Ast_503.Parsetree.function_param ->
+ Ast_502.Parsetree.function_paramval copy_function_body :
+ Ast_503.Parsetree.function_body ->
+ Ast_502.Parsetree.function_bodyval copy_type_constraint :
+ Ast_503.Parsetree.type_constraint ->
+ Ast_502.Parsetree.type_constraintval copy_direction_flag :
+ Ast_503.Asttypes.direction_flag ->
+ Ast_502.Asttypes.direction_flagval copy_case : Ast_503.Parsetree.case -> Ast_502.Parsetree.caseval copy_value_binding :
+ Ast_503.Parsetree.value_binding ->
+ Ast_502.Parsetree.value_bindingval copy_pattern : Ast_503.Parsetree.pattern -> Ast_502.Parsetree.patternval copy_pattern_desc :
+ Location.t ->
+ Ast_503.Parsetree.pattern_desc ->
+ Ast_502.Parsetree.pattern_descval copy_value_constraint :
+ Ast_503.Parsetree.value_constraint ->
+ Ast_502.Parsetree.value_constraintval copy_core_type : Ast_503.Parsetree.core_type -> Ast_502.Parsetree.core_typeval copy_location_stack :
+ Ast_503.Parsetree.location_stack ->
+ Ast_502.Parsetree.location_stackval copy_core_type_desc :
+ Ast_503.Parsetree.core_type_desc ->
+ Ast_502.Parsetree.core_type_descval copy_package_type :
+ Ast_503.Parsetree.package_type ->
+ Ast_502.Parsetree.package_typeval copy_row_field : Ast_503.Parsetree.row_field -> Ast_502.Parsetree.row_fieldval copy_row_field_desc :
+ Ast_503.Parsetree.row_field_desc ->
+ Ast_502.Parsetree.row_field_descval copy_object_field :
+ Ast_503.Parsetree.object_field ->
+ Ast_502.Parsetree.object_fieldval copy_attributes :
+ Ast_503.Parsetree.attributes ->
+ Ast_502.Parsetree.attributesval copy_attribute : Ast_503.Parsetree.attribute -> Ast_502.Parsetree.attributeval copy_payload : Ast_503.Parsetree.payload -> Ast_502.Parsetree.payloadval copy_structure : Ast_503.Parsetree.structure -> Ast_502.Parsetree.structureval copy_structure_item :
+ Ast_503.Parsetree.structure_item ->
+ Ast_502.Parsetree.structure_itemval copy_structure_item_desc :
+ Ast_503.Parsetree.structure_item_desc ->
+ Ast_502.Parsetree.structure_item_descval copy_include_declaration :
+ Ast_503.Parsetree.include_declaration ->
+ Ast_502.Parsetree.include_declarationval copy_class_declaration :
+ Ast_503.Parsetree.class_declaration ->
+ Ast_502.Parsetree.class_declarationval copy_class_expr :
+ Ast_503.Parsetree.class_expr ->
+ Ast_502.Parsetree.class_exprval copy_class_expr_desc :
+ Ast_503.Parsetree.class_expr_desc ->
+ Ast_502.Parsetree.class_expr_descval copy_class_structure :
+ Ast_503.Parsetree.class_structure ->
+ Ast_502.Parsetree.class_structureval copy_class_field :
+ Ast_503.Parsetree.class_field ->
+ Ast_502.Parsetree.class_fieldval copy_class_field_desc :
+ Ast_503.Parsetree.class_field_desc ->
+ Ast_502.Parsetree.class_field_descval copy_class_field_kind :
+ Ast_503.Parsetree.class_field_kind ->
+ Ast_502.Parsetree.class_field_kindval copy_open_declaration :
+ Ast_503.Parsetree.open_declaration ->
+ Ast_502.Parsetree.open_declarationval copy_module_binding :
+ Ast_503.Parsetree.module_binding ->
+ Ast_502.Parsetree.module_bindingval copy_module_expr :
+ Ast_503.Parsetree.module_expr ->
+ Ast_502.Parsetree.module_exprval copy_module_expr_desc :
+ Ast_503.Parsetree.module_expr_desc ->
+ Ast_502.Parsetree.module_expr_descval copy_functor_parameter :
+ Ast_503.Parsetree.functor_parameter ->
+ Ast_502.Parsetree.functor_parameterval copy_module_type :
+ Ast_503.Parsetree.module_type ->
+ Ast_502.Parsetree.module_typeval copy_module_type_desc :
+ Ast_503.Parsetree.module_type_desc ->
+ Ast_502.Parsetree.module_type_descval copy_with_constraint :
+ Ast_503.Parsetree.with_constraint ->
+ Ast_502.Parsetree.with_constraintval copy_signature : Ast_503.Parsetree.signature -> Ast_502.Parsetree.signatureval copy_signature_item :
+ Ast_503.Parsetree.signature_item ->
+ Ast_502.Parsetree.signature_itemval copy_signature_item_desc :
+ Ast_503.Parsetree.signature_item_desc ->
+ Ast_502.Parsetree.signature_item_descval copy_class_type_declaration :
+ Ast_503.Parsetree.class_type_declaration ->
+ Ast_502.Parsetree.class_type_declarationval copy_class_description :
+ Ast_503.Parsetree.class_description ->
+ Ast_502.Parsetree.class_descriptionval copy_class_type :
+ Ast_503.Parsetree.class_type ->
+ Ast_502.Parsetree.class_typeval copy_class_type_desc :
+ Ast_503.Parsetree.class_type_desc ->
+ Ast_502.Parsetree.class_type_descval copy_class_signature :
+ Ast_503.Parsetree.class_signature ->
+ Ast_502.Parsetree.class_signatureval copy_class_type_field :
+ Ast_503.Parsetree.class_type_field ->
+ Ast_502.Parsetree.class_type_fieldval copy_class_type_field_desc :
+ Ast_503.Parsetree.class_type_field_desc ->
+ Ast_502.Parsetree.class_type_field_descval copy_extension : Ast_503.Parsetree.extension -> Ast_502.Parsetree.extensionval copy_class_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_503.Parsetree.class_infos ->
+ 'g0 Ast_502.Parsetree.class_infosval copy_virtual_flag :
+ Ast_503.Asttypes.virtual_flag ->
+ Ast_502.Asttypes.virtual_flagval copy_include_description :
+ Ast_503.Parsetree.include_description ->
+ Ast_502.Parsetree.include_descriptionval copy_include_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_503.Parsetree.include_infos ->
+ 'g0 Ast_502.Parsetree.include_infosval copy_open_description :
+ Ast_503.Parsetree.open_description ->
+ Ast_502.Parsetree.open_descriptionval copy_open_infos :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_503.Parsetree.open_infos ->
+ 'g0 Ast_502.Parsetree.open_infosval copy_override_flag :
+ Ast_503.Asttypes.override_flag ->
+ Ast_502.Asttypes.override_flagval copy_module_type_declaration :
+ Ast_503.Parsetree.module_type_declaration ->
+ Ast_502.Parsetree.module_type_declarationval copy_module_substitution :
+ Ast_503.Parsetree.module_substitution ->
+ Ast_502.Parsetree.module_substitutionval copy_module_declaration :
+ Ast_503.Parsetree.module_declaration ->
+ Ast_502.Parsetree.module_declarationval copy_type_exception :
+ Ast_503.Parsetree.type_exception ->
+ Ast_502.Parsetree.type_exceptionval copy_type_extension :
+ Ast_503.Parsetree.type_extension ->
+ Ast_502.Parsetree.type_extensionval copy_extension_constructor :
+ Ast_503.Parsetree.extension_constructor ->
+ Ast_502.Parsetree.extension_constructorval copy_extension_constructor_kind :
+ Ast_503.Parsetree.extension_constructor_kind ->
+ Ast_502.Parsetree.extension_constructor_kindval copy_type_declaration :
+ Ast_503.Parsetree.type_declaration ->
+ Ast_502.Parsetree.type_declarationval copy_private_flag :
+ Ast_503.Asttypes.private_flag ->
+ Ast_502.Asttypes.private_flagval copy_type_kind : Ast_503.Parsetree.type_kind -> Ast_502.Parsetree.type_kindval copy_constructor_declaration :
+ Ast_503.Parsetree.constructor_declaration ->
+ Ast_502.Parsetree.constructor_declarationval copy_constructor_arguments :
+ Ast_503.Parsetree.constructor_arguments ->
+ Ast_502.Parsetree.constructor_argumentsval copy_label_declaration :
+ Ast_503.Parsetree.label_declaration ->
+ Ast_502.Parsetree.label_declarationval copy_mutable_flag :
+ Ast_503.Asttypes.mutable_flag ->
+ Ast_502.Asttypes.mutable_flagval copy_injectivity :
+ Ast_503.Asttypes.injectivity ->
+ Ast_502.Asttypes.injectivityval copy_variance : Ast_503.Asttypes.variance -> Ast_502.Asttypes.varianceval copy_value_description :
+ Ast_503.Parsetree.value_description ->
+ Ast_502.Parsetree.value_descriptionval copy_object_field_desc :
+ Ast_503.Parsetree.object_field_desc ->
+ Ast_502.Parsetree.object_field_descval copy_arg_label : Ast_503.Asttypes.arg_label -> Ast_502.Asttypes.arg_labelval copy_closed_flag :
+ Ast_503.Asttypes.closed_flag ->
+ Ast_502.Asttypes.closed_flagval copy_label : Ast_503.Asttypes.label -> Ast_502.Asttypes.labelval copy_rec_flag : Ast_503.Asttypes.rec_flag -> Ast_502.Asttypes.rec_flagval copy_constant : Ast_503.Parsetree.constant -> Ast_502.Parsetree.constantval copy_Longident_t : Longident.t -> Longident.tval copy_loc :
+ 'f0 'g0. ('f0 -> 'g0) ->
+ 'f0 Ast_503.Asttypes.loc ->
+ 'g0 Ast_502.Asttypes.locval copy_location : Location.t -> Location.t
\ No newline at end of file
diff --git a/ppxlib/Astlib/index.html b/ppxlib/Astlib/index.html
index 5ddc7eb..d6988b9 100644
--- a/ppxlib/Astlib/index.html
+++ b/ppxlib/Astlib/index.html
@@ -1,2 +1,2 @@
-Astlib (ppxlib.Astlib) Module Astlib
module Ast_402 : sig ... endmodule Ast_403 : sig ... endmodule Ast_404 : sig ... endmodule Ast_405 : sig ... endmodule Ast_406 : sig ... endmodule Ast_407 : sig ... endmodule Ast_408 : sig ... endmodule Ast_409 : sig ... endmodule Ast_410 : sig ... endmodule Ast_411 : sig ... endmodule Ast_412 : sig ... endmodule Ast_413 : sig ... endmodule Ast_414 : sig ... endmodule Ast_500 : sig ... endmodule Ast_501 : sig ... endmodule Migrate_402_403 : sig ... endmodule Migrate_403_402 : sig ... endmodule Migrate_403_404 : sig ... endmodule Migrate_404_403 : sig ... endmodule Migrate_404_405 : sig ... endmodule Migrate_405_404 : sig ... endmodule Migrate_405_406 : sig ... endmodule Migrate_406_405 : sig ... endmodule Migrate_406_407 : sig ... endmodule Migrate_407_406 : sig ... endmodule Migrate_407_408 : sig ... endmodule Migrate_408_407 : sig ... endmodule Migrate_408_409 : sig ... endmodule Migrate_409_408 : sig ... endmodule Migrate_409_410 : sig ... endmodule Migrate_410_409 : sig ... endmodule Migrate_410_411 : sig ... endmodule Migrate_411_410 : sig ... endmodule Migrate_411_412 : sig ... endmodule Migrate_412_411 : sig ... endmodule Migrate_412_413 : sig ... endmodule Migrate_413_412 : sig ... endmodule Migrate_413_414 : sig ... endmodule Migrate_414_413 : sig ... endmodule Migrate_414_500 : sig ... endmodule Migrate_500_414 : sig ... endmodule Migrate_500_501 : sig ... endmodule Migrate_501_500 : sig ... endmodule Ast_metadata : sig ... endMeta data related interface for a ppx rewriter
module Config : sig ... endMagic numbers
module Keyword : sig ... endmodule Location : sig ... endSource code locations (ranges of positions), used in parsetrees
module Longident : sig ... endLong identifiers, used in parsetrees.
module Parse : sig ... endEntry points in the parser
module Pprintast : sig ... end
\ No newline at end of file
+Astlib (ppxlib.Astlib) Module Astlib
module Ast_402 : sig ... endmodule Ast_403 : sig ... endmodule Ast_404 : sig ... endmodule Ast_405 : sig ... endmodule Ast_406 : sig ... endmodule Ast_407 : sig ... endmodule Ast_408 : sig ... endmodule Ast_409 : sig ... endmodule Ast_410 : sig ... endmodule Ast_411 : sig ... endmodule Ast_412 : sig ... endmodule Ast_413 : sig ... endmodule Ast_414 : sig ... endmodule Ast_500 : sig ... endmodule Ast_501 : sig ... endmodule Ast_502 : sig ... endmodule Ast_503 : sig ... endmodule Migrate_402_403 : sig ... endmodule Migrate_403_402 : sig ... endmodule Migrate_403_404 : sig ... endmodule Migrate_404_403 : sig ... endmodule Migrate_404_405 : sig ... endmodule Migrate_405_404 : sig ... endmodule Migrate_405_406 : sig ... endmodule Migrate_406_405 : sig ... endmodule Migrate_406_407 : sig ... endmodule Migrate_407_406 : sig ... endmodule Migrate_407_408 : sig ... endmodule Migrate_408_407 : sig ... endmodule Migrate_408_409 : sig ... endmodule Migrate_409_408 : sig ... endmodule Migrate_409_410 : sig ... endmodule Migrate_410_409 : sig ... endmodule Migrate_410_411 : sig ... endmodule Migrate_411_410 : sig ... endmodule Migrate_411_412 : sig ... endmodule Migrate_412_411 : sig ... endmodule Migrate_412_413 : sig ... endmodule Migrate_413_412 : sig ... endmodule Migrate_413_414 : sig ... endmodule Migrate_414_413 : sig ... endmodule Migrate_414_500 : sig ... endmodule Migrate_500_414 : sig ... endmodule Migrate_500_501 : sig ... endmodule Migrate_501_500 : sig ... endmodule Migrate_501_502 : sig ... endmodule Migrate_502_501 : sig ... endmodule Migrate_502_503 : sig ... endmodule Migrate_503_502 : sig ... endmodule Ast_metadata : sig ... endMeta data related interface for a ppx rewriter
module Config : sig ... endMagic numbers
module Keyword : sig ... endmodule Location : sig ... endSource code locations (ranges of positions), used in parsetrees
module Longident : sig ... endLong identifiers, used in parsetrees.
module Parse : sig ... endEntry points in the parser
module Pprintast : sig ... end
\ No newline at end of file
diff --git a/ppxlib/Astlib__Ast_502/index.html b/ppxlib/Astlib__Ast_502/index.html
new file mode 100644
index 0000000..c5fd204
--- /dev/null
+++ b/ppxlib/Astlib__Ast_502/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Ast_502 (ppxlib.Astlib__Ast_502) Module Astlib__Ast_502
\ No newline at end of file
diff --git a/ppxlib/Astlib__Ast_503/index.html b/ppxlib/Astlib__Ast_503/index.html
new file mode 100644
index 0000000..d742103
--- /dev/null
+++ b/ppxlib/Astlib__Ast_503/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Ast_503 (ppxlib.Astlib__Ast_503) Module Astlib__Ast_503
\ No newline at end of file
diff --git a/ppxlib/Astlib__Migrate_501_502/index.html b/ppxlib/Astlib__Migrate_501_502/index.html
new file mode 100644
index 0000000..9b26f9b
--- /dev/null
+++ b/ppxlib/Astlib__Migrate_501_502/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Migrate_501_502 (ppxlib.Astlib__Migrate_501_502) Module Astlib__Migrate_501_502
\ No newline at end of file
diff --git a/ppxlib/Astlib__Migrate_502_501/index.html b/ppxlib/Astlib__Migrate_502_501/index.html
new file mode 100644
index 0000000..968cc38
--- /dev/null
+++ b/ppxlib/Astlib__Migrate_502_501/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Migrate_502_501 (ppxlib.Astlib__Migrate_502_501) Module Astlib__Migrate_502_501
\ No newline at end of file
diff --git a/ppxlib/Astlib__Migrate_502_503/index.html b/ppxlib/Astlib__Migrate_502_503/index.html
new file mode 100644
index 0000000..df58454
--- /dev/null
+++ b/ppxlib/Astlib__Migrate_502_503/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Migrate_502_503 (ppxlib.Astlib__Migrate_502_503) Module Astlib__Migrate_502_503
\ No newline at end of file
diff --git a/ppxlib/Astlib__Migrate_503_502/index.html b/ppxlib/Astlib__Migrate_503_502/index.html
new file mode 100644
index 0000000..274dead
--- /dev/null
+++ b/ppxlib/Astlib__Migrate_503_502/index.html
@@ -0,0 +1,2 @@
+
+Astlib__Migrate_503_502 (ppxlib.Astlib__Migrate_503_502) Module Astlib__Migrate_503_502
\ No newline at end of file
diff --git a/ppxlib/Ppxlib/Ast_builder/Default/index.html b/ppxlib/Ppxlib/Ast_builder/Default/index.html
index 33946df..b51aaf7 100644
--- a/ppxlib/Ppxlib/Ast_builder/Default/index.html
+++ b/ppxlib/Ppxlib/Ast_builder/Default/index.html
@@ -674,13 +674,21 @@
Astlib.Ast_500.Parsetree.patternval econstruct :
Astlib.Ast_500.Parsetree.constructor_declaration ->
Astlib.Ast_500.Parsetree.expression option ->
- Astlib.Ast_500.Parsetree.expressionval elist :
+ Astlib.Ast_500.Parsetree.expressionval elist_tail :
loc:Location.t ->
Astlib.Ast_500.Parsetree.expression list ->
- Astlib.Ast_500.Parsetree.expressionval plist :
+ Astlib.Ast_500.Parsetree.expression ->
+ Astlib.Ast_500.Parsetree.expressionelist_tail ~loc [expr1; expr2; expr3] expr_tail produces the expression expr1::expr2::expr3::expr_tail.
val elist :
+ loc:Location.t ->
+ Astlib.Ast_500.Parsetree.expression list ->
+ Astlib.Ast_500.Parsetree.expressionelist ~loc [expr1; expr2; expr3] produces the list litteral expression [expr1; expr2; expr3].
val plist_tail :
loc:Location.t ->
Astlib.Ast_500.Parsetree.pattern list ->
- Astlib.Ast_500.Parsetree.patternval pstr_value_list :
+ Astlib.Ast_500.Parsetree.pattern ->
+ Astlib.Ast_500.Parsetree.patternplist_tail ~loc [pat1; pat2; pat3] pat_tail produces the pattern pat1::pat2::pat3::pat_tail.
val plist :
+ loc:Location.t ->
+ Astlib.Ast_500.Parsetree.pattern list ->
+ Astlib.Ast_500.Parsetree.patternplist ~loc [pat1; pat2; pat3] produces the list pattern [pat1; pat2; pat3].
val pstr_value_list :
loc:Location.t ->
Ppxlib_ast.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
diff --git a/ppxlib/Ppxlib/Ast_builder/Make/index.html b/ppxlib/Ppxlib/Ast_builder/Make/index.html
index a018931..37b7ec0 100644
--- a/ppxlib/Ppxlib/Ast_builder/Make/index.html
+++ b/ppxlib/Ppxlib/Ast_builder/Make/index.html
@@ -483,11 +483,17 @@
Astlib.Ast_500.Parsetree.patternval econstruct :
Astlib.Ast_500.Parsetree.constructor_declaration ->
Astlib.Ast_500.Parsetree.expression option ->
- Astlib.Ast_500.Parsetree.expressionval elist :
+ Astlib.Ast_500.Parsetree.expressionval elist_tail :
Astlib.Ast_500.Parsetree.expression list ->
- Astlib.Ast_500.Parsetree.expressionval plist :
+ Astlib.Ast_500.Parsetree.expression ->
+ Astlib.Ast_500.Parsetree.expressionelist_tail ~loc [expr1; expr2; expr3] expr_tail produces the expression expr1::expr2::expr3::expr_tail.
val elist :
+ Astlib.Ast_500.Parsetree.expression list ->
+ Astlib.Ast_500.Parsetree.expressionelist ~loc [expr1; expr2; expr3] produces the list litteral expression [expr1; expr2; expr3].
val plist_tail :
Astlib.Ast_500.Parsetree.pattern list ->
- Astlib.Ast_500.Parsetree.patternval pstr_value_list :
+ Astlib.Ast_500.Parsetree.pattern ->
+ Astlib.Ast_500.Parsetree.patternplist_tail ~loc [pat1; pat2; pat3] pat_tail produces the pattern pat1::pat2::pat3::pat_tail.
val plist :
+ Astlib.Ast_500.Parsetree.pattern list ->
+ Astlib.Ast_500.Parsetree.patternplist ~loc [pat1; pat2; pat3] produces the list pattern [pat1; pat2; pat3].
val pstr_value_list :
loc:Location.t ->
Ppxlib_ast.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
diff --git a/ppxlib/Ppxlib/Ast_builder/module-type-S/index.html b/ppxlib/Ppxlib/Ast_builder/module-type-S/index.html
index 36297d6..aa643b6 100644
--- a/ppxlib/Ppxlib/Ast_builder/module-type-S/index.html
+++ b/ppxlib/Ppxlib/Ast_builder/module-type-S/index.html
@@ -483,11 +483,17 @@
Astlib.Ast_500.Parsetree.patternval econstruct :
Astlib.Ast_500.Parsetree.constructor_declaration ->
Astlib.Ast_500.Parsetree.expression option ->
- Astlib.Ast_500.Parsetree.expressionval elist :
+ Astlib.Ast_500.Parsetree.expressionval elist_tail :
Astlib.Ast_500.Parsetree.expression list ->
- Astlib.Ast_500.Parsetree.expressionval plist :
+ Astlib.Ast_500.Parsetree.expression ->
+ Astlib.Ast_500.Parsetree.expressionelist_tail ~loc [expr1; expr2; expr3] expr_tail produces the expression expr1::expr2::expr3::expr_tail.
val elist :
+ Astlib.Ast_500.Parsetree.expression list ->
+ Astlib.Ast_500.Parsetree.expressionelist ~loc [expr1; expr2; expr3] produces the list litteral expression [expr1; expr2; expr3].
val plist_tail :
Astlib.Ast_500.Parsetree.pattern list ->
- Astlib.Ast_500.Parsetree.patternval pstr_value_list :
+ Astlib.Ast_500.Parsetree.pattern ->
+ Astlib.Ast_500.Parsetree.patternplist_tail ~loc [pat1; pat2; pat3] pat_tail produces the pattern pat1::pat2::pat3::pat_tail.
val plist :
+ Astlib.Ast_500.Parsetree.pattern list ->
+ Astlib.Ast_500.Parsetree.patternplist ~loc [pat1; pat2; pat3] produces the list pattern [pat1; pat2; pat3].
val pstr_value_list :
loc:Location.t ->
Ppxlib_ast.Asttypes.rec_flag ->
Astlib.Ast_500.Parsetree.value_binding list ->
diff --git a/ppxlib/Ppxlib/Context_free/Rule/index.html b/ppxlib/Ppxlib/Context_free/Rule/index.html
index 4a2cd10..0250431 100644
--- a/ppxlib/Ppxlib/Context_free/Rule/index.html
+++ b/ppxlib/Ppxlib/Context_free/Rule/index.html
@@ -3,7 +3,11 @@
string ->
(Astlib.Ast_500.Parsetree.expression ->
Astlib.Ast_500.Parsetree.expression option) ->
- tspecial_function id expand is a rule to rewrite a function call at parsing time. id is the identifier to match on and expand is used to expand the full function application (it gets the Pexp_apply node). If the function is found in the tree without being applied, expand gets only the identifier (Pexp_ident node) so you should handle both cases.
If id is an operator identifier and contains dots, it should be parenthesized (e.g. "(+.+)").
expand must decide whether the expression it receive can be rewritten or not. Especially ppxlib makes the assumption that expand is idempotent. It will loop if it is not.
module Constant_kind : sig ... endUsed for the constant function.
val constant :
+ tval special_function' :
+ Longident.t ->
+ (Astlib.Ast_500.Parsetree.expression ->
+ Astlib.Ast_500.Parsetree.expression option) ->
+ tspecial_function id expand is a rule to rewrite a function call at parsing time. id is the identifier to match on and expand is used to expand the full function application (it gets the Pexp_apply node). If the function is found in the tree without being applied, expand gets only the identifier (Pexp_ident node) so you should handle both cases.
If id is an operator identifier and contains dots, it should be parenthesized (e.g. "(+.+)"). Another option is to use the special_function' variant which takes directly a Longident.t argument.
expand must decide whether the expression it receive can be rewritten or not. Especially ppxlib makes the assumption that expand is idempotent. It will loop if it is not.
module Constant_kind : sig ... endUsed for the constant function.
val constant :
Constant_kind.t ->
char ->
(Location.t -> string -> Ppxlib_ast.Parsetree.expression) ->
diff --git a/ppxlib/Stdppx/index.html b/ppxlib/Stdppx/index.html
index 8715c71..305b127 100644
--- a/ppxlib/Stdppx/index.html
+++ b/ppxlib/Stdppx/index.html
@@ -1,5 +1,5 @@
-Stdppx (ppxlib.Stdppx) Module Stdppx
module Caml = Stdlibmodule Sexp = Sexplib0.Sexpmodule Sexpable = Sexplib0.Sexpableinclude module type of struct include Sexplib0.Sexp_conv end
Conversion of OCaml-values to S-expressions
val default_string_of_float : (float -> string) refdefault_string_of_float reference to the default function used to convert floats to strings.
Initially set to fun n -> sprintf "%.20G" n.
val write_old_option_format : bool refwrite_old_option_format reference for the default option format used to write option values. If set to true, the old-style option format will be used, the new-style one otherwise.
Initially set to true.
val read_old_option_format : bool refread_old_option_format reference for the default option format used to read option values. Of_sexp_error will be raised with old-style option values if this reference is set to false. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.
Initially set to true.
We re-export a tail recursive map function, because some modules override the standard library functions (e.g. StdLabels) which wrecks havoc with the camlp4 extension.
val sexp_of_unit : unit -> Sexplib0.Sexp.tsexp_of_unit () converts a value of type unit to an S-expression.
val sexp_of_bool : bool -> Sexplib0.Sexp.tsexp_of_bool b converts the value x of type bool to an S-expression.
val sexp_of_string : string -> Sexplib0.Sexp.tsexp_of_bool str converts the value str of type string to an S-expression.
val sexp_of_bytes : bytes -> Sexplib0.Sexp.tsexp_of_bool str converts the value str of type bytes to an S-expression.
val sexp_of_char : char -> Sexplib0.Sexp.tsexp_of_char c converts the value c of type char to an S-expression.
val sexp_of_int : int -> Sexplib0.Sexp.tsexp_of_int n converts the value n of type int to an S-expression.
val sexp_of_float : float -> Sexplib0.Sexp.tsexp_of_float n converts the value n of type float to an S-expression.
val sexp_of_int32 : int32 -> Sexplib0.Sexp.tsexp_of_int32 n converts the value n of type int32 to an S-expression.
val sexp_of_int64 : int64 -> Sexplib0.Sexp.tsexp_of_int64 n converts the value n of type int64 to an S-expression.
val sexp_of_nativeint : nativeint -> Sexplib0.Sexp.tsexp_of_nativeint n converts the value n of type nativeint to an S-expression.
val sexp_of_ref : ('a -> Sexplib0.Sexp.t) -> 'a ref -> Sexplib0.Sexp.tsexp_of_ref conv r converts the value r of type 'a ref to an S-expression. Uses conv to convert values of type 'a to an S-expression.
val sexp_of_lazy_t : ('a -> Sexplib0.Sexp.t) -> 'a lazy_t -> Sexplib0.Sexp.tsexp_of_lazy_t conv l converts the value l of type 'a lazy_t to an S-expression. Uses conv to convert values of type 'a to an S-expression.
val sexp_of_option : ('a -> Sexplib0.Sexp.t) -> 'a option -> Sexplib0.Sexp.tsexp_of_option conv opt converts the value opt of type 'a
+Stdppx (ppxlib.Stdppx) Module Stdppx
module Caml = Stdlibmodule Sexp = Sexplib0.Sexpmodule Sexpable = Sexplib0.Sexpableinclude module type of struct include Sexplib0.Sexp_conv end
Conversion of OCaml-values to S-expressions
val default_string_of_float : (float -> string) refdefault_string_of_float reference to the default function used to convert floats to strings.
Initially set to fun n -> sprintf "%.20G" n.
val write_old_option_format : bool refwrite_old_option_format reference for the default option format used to write option values. If set to true, the old-style option format will be used, the new-style one otherwise.
Initially set to true.
val read_old_option_format : bool refread_old_option_format reference for the default option format used to read option values. Of_sexp_error will be raised with old-style option values if this reference is set to false. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.
Initially set to true.
We re-export a tail recursive map function, because some modules override the standard library functions (e.g. StdLabels) which wrecks havoc with the camlp4 extension.
val sexp_of_unit : unit -> Sexplib0.Sexp.tsexp_of_unit () converts a value of type unit to an S-expression.
val sexp_of_bool : bool -> Sexplib0.Sexp.tsexp_of_bool b converts the value x of type bool to an S-expression.
val sexp_of_string : string -> Sexplib0.Sexp.tsexp_of_string str converts the value str of type string to an S-expression.
val sexp_of_bytes : bytes -> Sexplib0.Sexp.tsexp_of_bytes str converts the value str of type bytes to an S-expression.
val sexp_of_char : char -> Sexplib0.Sexp.tsexp_of_char c converts the value c of type char to an S-expression.
val sexp_of_int : int -> Sexplib0.Sexp.tsexp_of_int n converts the value n of type int to an S-expression.
val sexp_of_float : float -> Sexplib0.Sexp.tsexp_of_float n converts the value n of type float to an S-expression.
val sexp_of_int32 : int32 -> Sexplib0.Sexp.tsexp_of_int32 n converts the value n of type int32 to an S-expression.
val sexp_of_int64 : int64 -> Sexplib0.Sexp.tsexp_of_int64 n converts the value n of type int64 to an S-expression.
val sexp_of_nativeint : nativeint -> Sexplib0.Sexp.tsexp_of_nativeint n converts the value n of type nativeint to an S-expression.
val sexp_of_ref : ('a -> Sexplib0.Sexp.t) -> 'a ref -> Sexplib0.Sexp.tsexp_of_ref conv r converts the value r of type 'a ref to an S-expression. Uses conv to convert values of type 'a to an S-expression.
val sexp_of_lazy_t : ('a -> Sexplib0.Sexp.t) -> 'a lazy_t -> Sexplib0.Sexp.tsexp_of_lazy_t conv l converts the value l of type 'a lazy_t to an S-expression. Uses conv to convert values of type 'a to an S-expression.
val sexp_of_option : ('a -> Sexplib0.Sexp.t) -> 'a option -> Sexplib0.Sexp.tsexp_of_option conv opt converts the value opt of type 'a
option to an S-expression. Uses conv to convert values of type 'a to an S-expression.
val sexp_of_pair :
('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
diff --git a/ppxlib/_doc-dir/CHANGES.md b/ppxlib/_doc-dir/CHANGES.md
index c9b05cb..41933b9 100644
--- a/ppxlib/_doc-dir/CHANGES.md
+++ b/ppxlib/_doc-dir/CHANGES.md
@@ -1,3 +1,47 @@
+0.33.0 (2024-07-22)
+-------------------
+
+- Fix a bug where `Code_path.main_module_name` would not properly remove
+ extensions from the filename and therefore return an invalid module name.
+ (#512, @NathanReb)
+
+- Add `-unused-type-warnings` flag to the driver to allow users to disable
+ only the generation of warning 34 silencing structure items when using
+ `[@@deriving ...]` on type declarations. (#511, @mbarbin, @NathanReb)
+
+- Make `-unused-code-warnings` flag to the driver also controls the generation
+ of warning 34 silencing structure items when using `[@@deriving ...]` on type
+ declarations. (#510, @mbarbin, @NathanReb)
+
+- Driver: Add `-unused-code-warnings=force` command-line flag argument. (#490, @mbarbin)
+
+- new functions `Ast_builder.{e,p}list_tail` that take an extra tail
+ expression/pattern argument parameter compared to `Ast_builder.{e,p}list`, so
+ they can build ASTs like `a :: b :: c` instead of only `[ a; b ]`.
+ (#498, #502, @v-gb, @NathanReb)
+
+- Fix `Longident.parse` so it also handles indexing operators such as
+ `.!()`, `.%(;..)<-`, or `Vec.(.%())` (#494, @octachron)
+
+- Add a `special_function'` variant which directly takes a `Longident.t`
+ argument to avoid the issue that `Longident.t` cover distinct syntaxic classes
+ which cannot be easily parsed by a common parser (#496, @octachron).
+
+- Keep location ranges consistent when migrating `Pexp_function` nodes from 5.2+
+ to older versions (#504, @jchavarri)
+
+- Fix `-locations-check` behaviour so it is no longer required to pass `-check`
+ as well to enable location checks. (#506, @NathanReb)
+
+
+0.32.1 (2024-04-23)
+-------------------
+
+- Add support for OCaml 5.2
+
+- Insert errors from caught located exceptions in place of the code that
+ should have been generated by context-free rules. (#472, @NathanReb)
+
0.32.0 (2024-02-05)
-------------------
diff --git a/ppxlib/_doc-dir/README.md b/ppxlib/_doc-dir/README.md
index f73fc48..612b5b6 100644
--- a/ppxlib/_doc-dir/README.md
+++ b/ppxlib/_doc-dir/README.md
@@ -1,11 +1,13 @@
# Ppxlib - Meta-programming for OCaml
-[![ocaml-ci status][ocaml-ci-img]][ocaml-ci] [![AppVeyor status][appveyor-img]][appveyor]
+[![ocaml-ci status][ocaml-ci-img]][ocaml-ci] [![trunk-build-status][trunk-build-img]][trunk-build] [![AppVeyor status][appveyor-img]][appveyor]
[ocaml-ci]: https://ci.ocamllabs.io/github/ocaml-ppx/ppxlib
[ocaml-ci-img]: https://img.shields.io/endpoint?url=https%3A%2F%2Fci.ocamllabs.io%2Fbadge%2Focaml-ppx%2Fppxlib%2Fmain&logo=ocaml
[appveyor]: https://ci.appveyor.com/project/diml/ppxlib/branch/main
[appveyor-img]: https://ci.appveyor.com/api/projects/status/bogbsm33uvh083jx?svg=true
+[trunk-build]: https://github.com/ocaml-ppx/ppxlib/actions/workflows/trunk-build.yml
+[trunk-build-img]: https://github.com/ocaml-ppx/ppxlib/actions/workflows/trunk-build.yml/badge.svg?branch=main
[Ppxlib documentation][doc]
diff --git a/ppxlib/_doc-dir/odoc-pages/driver.mld b/ppxlib/_doc-dir/odoc-pages/driver.mld
index f49aa28..7f4d7a7 100644
--- a/ppxlib/_doc-dir/odoc-pages/driver.mld
+++ b/ppxlib/_doc-dir/odoc-pages/driver.mld
@@ -91,8 +91,23 @@ driver.exe [extra_args] []
-no-merge Do not merge context free transformations (better for debugging rewriters). As a result, the context-free transformations are not all applied before all impl and intf.
-cookie NAME=EXPR Set the cookie NAME to EXPR
--cookie Same as -cookie
- -help Display this list of options
- --help Display this list of options
+ -deriving-keep-w32 {impl|intf|both}
+ Do not try to disable warning 32 for the generated code
+ -deriving-disable-w32-method {code|attribute}
+ How to disable warning 32 for the generated code
+ -type-conv-keep-w32 {impl|intf|both}
+ Deprecated, use -deriving-keep-w32
+ -type-conv-w32 {code|attribute}
+ Deprecated, use -deriving-disable-w32-method
+ -deriving-keep-w60 {impl|intf|both}
+ Do not try to disable warning 60 for the generated code
+ -unused-code-warnings {true|false|force}
+ Allow ppx derivers to enable unused code warnings (default: false)
+ -unused-type-warnings {true|false|force}
+ Allow unused type warnings for types with [@@deriving ...] (default: false)
+ -help Display this list of options
+ --help Display this list of options
+
v}
{%html: %}
diff --git a/ppxlib/driver.html b/ppxlib/driver.html
index 8a5b21d..e6653e2 100644
--- a/ppxlib/driver.html
+++ b/ppxlib/driver.html
@@ -41,8 +41,22 @@
-no-merge Do not merge context free transformations (better for debugging rewriters). As a result, the context-free transformations are not all applied before all impl and intf.
-cookie NAME=EXPR Set the cookie NAME to EXPR
--cookie Same as -cookie
- -help Display this list of options
- --help Display this list of options and
Ppx rewriter driver
driver.exe [extra_args] <infile> <outfile>
+ -deriving-keep-w32 {impl|intf|both}
+ Do not try to disable warning 32 for the generated code
+ -deriving-disable-w32-method {code|attribute}
+ How to disable warning 32 for the generated code
+ -type-conv-keep-w32 {impl|intf|both}
+ Deprecated, use -deriving-keep-w32
+ -type-conv-w32 {code|attribute}
+ Deprecated, use -deriving-disable-w32-method
+ -deriving-keep-w60 {impl|intf|both}
+ Do not try to disable warning 60 for the generated code
+ -unused-code-warnings {true|false|force}
+ Allow ppx derivers to enable unused code warnings (default: false)
+ -unused-type-warnings {true|false|force}
+ Allow unused type warnings for types with [@@deriving ...] (default: false)
+ -help Display this list of options
+ --help Display this list of options and
Ppx rewriter driver
driver.exe [extra_args] <infile> <outfile>
-loc-filename <string> File name to use in locations
-reserve-namespace <string> Mark the given namespace as reserved
-no-check Disable checks (unsafe)
diff --git a/sexplib0/Sexplib0/Sexp_conv/index.html b/sexplib0/Sexplib0/Sexp_conv/index.html
index 4a9fd79..0cbaaf1 100644
--- a/sexplib0/Sexplib0/Sexp_conv/index.html
+++ b/sexplib0/Sexplib0/Sexp_conv/index.html
@@ -1,5 +1,5 @@
-Sexp_conv (sexplib0.Sexplib0.Sexp_conv) Module Sexplib0.Sexp_conv
Utility Module for S-expression Conversions
Conversion of OCaml-values to S-expressions
val default_string_of_float : (float -> string) refdefault_string_of_float reference to the default function used to convert floats to strings.
Initially set to fun n -> sprintf "%.20G" n.
val write_old_option_format : bool refwrite_old_option_format reference for the default option format used to write option values. If set to true, the old-style option format will be used, the new-style one otherwise.
Initially set to true.
val read_old_option_format : bool refread_old_option_format reference for the default option format used to read option values. Of_sexp_error will be raised with old-style option values if this reference is set to false. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.
Initially set to true.
We re-export a tail recursive map function, because some modules override the standard library functions (e.g. StdLabels) which wrecks havoc with the camlp4 extension.
val sexp_of_unit : unit -> Sexp.tsexp_of_unit () converts a value of type unit to an S-expression.
val sexp_of_bool : bool -> Sexp.tsexp_of_bool b converts the value x of type bool to an S-expression.
val sexp_of_string : string -> Sexp.tsexp_of_bool str converts the value str of type string to an S-expression.
val sexp_of_bytes : bytes -> Sexp.tsexp_of_bool str converts the value str of type bytes to an S-expression.
val sexp_of_char : char -> Sexp.tsexp_of_char c converts the value c of type char to an S-expression.
val sexp_of_int : int -> Sexp.tsexp_of_int n converts the value n of type int to an S-expression.
val sexp_of_float : float -> Sexp.tsexp_of_float n converts the value n of type float to an S-expression.
val sexp_of_int32 : int32 -> Sexp.tsexp_of_int32 n converts the value n of type int32 to an S-expression.
val sexp_of_int64 : int64 -> Sexp.tsexp_of_int64 n converts the value n of type int64 to an S-expression.
val sexp_of_nativeint : nativeint -> Sexp.tsexp_of_nativeint n converts the value n of type nativeint to an S-expression.
sexp_of_ref conv r converts the value r of type 'a ref to an S-expression. Uses conv to convert values of type 'a to an S-expression.
sexp_of_lazy_t conv l converts the value l of type 'a lazy_t to an S-expression. Uses conv to convert values of type 'a to an S-expression.
sexp_of_option conv opt converts the value opt of type 'a
+Sexp_conv (sexplib0.Sexplib0.Sexp_conv) Module Sexplib0.Sexp_conv
Utility Module for S-expression Conversions
Conversion of OCaml-values to S-expressions
val default_string_of_float : (float -> string) refdefault_string_of_float reference to the default function used to convert floats to strings.
Initially set to fun n -> sprintf "%.20G" n.
val write_old_option_format : bool refwrite_old_option_format reference for the default option format used to write option values. If set to true, the old-style option format will be used, the new-style one otherwise.
Initially set to true.
val read_old_option_format : bool refread_old_option_format reference for the default option format used to read option values. Of_sexp_error will be raised with old-style option values if this reference is set to false. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.
Initially set to true.
We re-export a tail recursive map function, because some modules override the standard library functions (e.g. StdLabels) which wrecks havoc with the camlp4 extension.
val sexp_of_unit : unit -> Sexp.tsexp_of_unit () converts a value of type unit to an S-expression.
val sexp_of_bool : bool -> Sexp.tsexp_of_bool b converts the value x of type bool to an S-expression.
val sexp_of_string : string -> Sexp.tsexp_of_string str converts the value str of type string to an S-expression.
val sexp_of_bytes : bytes -> Sexp.tsexp_of_bytes str converts the value str of type bytes to an S-expression.
val sexp_of_char : char -> Sexp.tsexp_of_char c converts the value c of type char to an S-expression.
val sexp_of_int : int -> Sexp.tsexp_of_int n converts the value n of type int to an S-expression.
val sexp_of_float : float -> Sexp.tsexp_of_float n converts the value n of type float to an S-expression.
val sexp_of_int32 : int32 -> Sexp.tsexp_of_int32 n converts the value n of type int32 to an S-expression.
val sexp_of_int64 : int64 -> Sexp.tsexp_of_int64 n converts the value n of type int64 to an S-expression.
val sexp_of_nativeint : nativeint -> Sexp.tsexp_of_nativeint n converts the value n of type nativeint to an S-expression.
sexp_of_ref conv r converts the value r of type 'a ref to an S-expression. Uses conv to convert values of type 'a to an S-expression.
sexp_of_lazy_t conv l converts the value l of type 'a lazy_t to an S-expression. Uses conv to convert values of type 'a to an S-expression.
sexp_of_option conv opt converts the value opt of type 'a
option to an S-expression. Uses conv to convert values of type 'a to an S-expression.
sexp_of_pair conv1 conv2 pair converts a pair to an S-expression. It uses its first argument to convert the first element of the pair, and its second argument to convert the second element of the pair.
val sexp_of_triple :
('a -> Sexp.t) ->
('b -> Sexp.t) ->
diff --git a/sexplib0/Sexplib0/Sexp_conv_error/index.html b/sexplib0/Sexplib0/Sexp_conv_error/index.html
index fa14cce..38bfa32 100644
--- a/sexplib0/Sexplib0/Sexp_conv_error/index.html
+++ b/sexplib0/Sexplib0/Sexp_conv_error/index.html
@@ -1,5 +1,5 @@
-Sexp_conv_error (sexplib0.Sexplib0.Sexp_conv_error) Module Sexplib0.Sexp_conv_error
exception Of_sexp_error of exn * Sexp.tval tuple_of_size_n_expected : string -> int -> Sexp.t -> 'aval stag_no_args : string -> Sexp.t -> 'aval stag_incorrect_n_args : string -> string -> Sexp.t -> 'aval stag_takes_args : string -> Sexp.t -> 'aval nested_list_invalid_sum : string -> Sexp.t -> 'aval empty_list_invalid_sum : string -> Sexp.t -> 'aval unexpected_stag : string -> Sexp.t -> 'aval record_sexp_bool_with_payload : string -> Sexp.t -> 'aval record_only_pairs_expected : string -> Sexp.t -> 'aval record_superfluous_fields :
+Sexp_conv_error (sexplib0.Sexplib0.Sexp_conv_error) Module Sexplib0.Sexp_conv_error
exception Of_sexp_error of exn * Sexp.tval error : loc:string -> sexp:Sexp.t -> string -> 'aval simple_error : string -> string -> Sexp.t -> 'aval tuple_of_size_n_expected : string -> int -> Sexp.t -> 'aval tuple_pair_expected : string -> string -> Sexp.t -> 'aval tuple_incorrect_label : string -> string -> int -> Sexp.t -> 'aval stag_no_args : string -> Sexp.t -> 'aval stag_incorrect_n_args : string -> string -> Sexp.t -> 'aval stag_takes_args : string -> Sexp.t -> 'aval nested_list_invalid_sum : string -> Sexp.t -> 'aval empty_list_invalid_sum : string -> Sexp.t -> 'aval unexpected_stag : string -> Sexp.t -> 'aval record_sexp_bool_with_payload : string -> Sexp.t -> 'aval record_only_pairs_expected : string -> Sexp.t -> 'aval record_invalid_fields :
what:string ->
loc:string ->
string list ->
diff --git a/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/Fields/index.html b/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/Fields/index.html
new file mode 100644
index 0000000..613243e
--- /dev/null
+++ b/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/Fields/index.html
@@ -0,0 +1,2 @@
+
+Fields (sexplib0.Sexplib0.Sexp_conv_labeled_tuple.Fields) Module Sexp_conv_labeled_tuple.Fields
\ No newline at end of file
diff --git a/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/index.html b/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/index.html
new file mode 100644
index 0000000..5a6f093
--- /dev/null
+++ b/sexplib0/Sexplib0/Sexp_conv_labeled_tuple/index.html
@@ -0,0 +1,7 @@
+
+Sexp_conv_labeled_tuple (sexplib0.Sexplib0.Sexp_conv_labeled_tuple) Module Sexplib0.Sexp_conv_labeled_tuple
module Fields : sig ... end
\ No newline at end of file
diff --git a/sexplib0/Sexplib0/index.html b/sexplib0/Sexplib0/index.html
index c756d4f..c1f31d2 100644
--- a/sexplib0/Sexplib0/index.html
+++ b/sexplib0/Sexplib0/index.html
@@ -1,2 +1,2 @@
-Sexplib0 (sexplib0.Sexplib0) Module Sexplib0
module Sexp : sig ... endType of S-expressions
module Sexp_conv : sig ... endUtility Module for S-expression Conversions
module Sexp_conv_error : sig ... endmodule Sexp_conv_record : sig ... endmodule Sexp_grammar : sig ... endRepresentation of S-expression grammars
module Sexpable : sig ... end
\ No newline at end of file
+Sexplib0 (sexplib0.Sexplib0) Module Sexplib0
module Sexp : sig ... endType of S-expressions
module Sexp_conv : sig ... endUtility Module for S-expression Conversions
module Sexp_conv_error : sig ... endmodule Sexp_conv_record : sig ... endmodule Sexp_conv_labeled_tuple : sig ... endmodule Sexp_grammar : sig ... endRepresentation of S-expression grammars
module Sexpable : sig ... end
\ No newline at end of file
diff --git a/sexplib0/Sexplib0__Sexp_conv_labeled_tuple/index.html b/sexplib0/Sexplib0__Sexp_conv_labeled_tuple/index.html
new file mode 100644
index 0000000..0b77cfc
--- /dev/null
+++ b/sexplib0/Sexplib0__Sexp_conv_labeled_tuple/index.html
@@ -0,0 +1,2 @@
+
+Sexplib0__Sexp_conv_labeled_tuple (sexplib0.Sexplib0__Sexp_conv_labeled_tuple) Module Sexplib0__Sexp_conv_labeled_tuple
\ No newline at end of file
diff --git a/sexplib0/_doc-dir/CHANGES.md b/sexplib0/_doc-dir/CHANGES.md
index fdf7d1a..d9c4327 100644
--- a/sexplib0/_doc-dir/CHANGES.md
+++ b/sexplib0/_doc-dir/CHANGES.md
@@ -1,3 +1,14 @@
+## Release v0.17.0
+
+* Add a test that `Sexp.to_string` works on large input.
+
+* Improve error messages produced by `Sexp_conv`
+
+* Use `[@tail_mod_cons]` in `sexp_of_list`.
+
+* Add support for labeled tuples, a compiler extension available at:
+ https://github.com/ocaml-flambda/flambda-backend
+
## Release v0.16.0
* Added `Sexp_conv_record`. Supports improvements to `ppx_sexp_conv` for deriving
diff --git a/sexplib0/_doc-dir/LICENSE.md b/sexplib0/_doc-dir/LICENSE.md
index 8c3a411..6fd223c 100644
--- a/sexplib0/_doc-dir/LICENSE.md
+++ b/sexplib0/_doc-dir/LICENSE.md
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2005--2023 Jane Street Group, LLC
+Copyright (c) 2005--2024 Jane Street Group, LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/trace-tef/Trace_tef__/index.html b/trace-tef/Trace_tef__/index.html
new file mode 100644
index 0000000..92c7a3e
--- /dev/null
+++ b/trace-tef/Trace_tef__/index.html
@@ -0,0 +1,2 @@
+
+Trace_tef__ (trace-tef.Trace_tef__) Module Trace_tef__
\ No newline at end of file
diff --git a/trace-tef/Trace_tef__Event/index.html b/trace-tef/Trace_tef__Event/index.html
new file mode 100644
index 0000000..1b6c838
--- /dev/null
+++ b/trace-tef/Trace_tef__Event/index.html
@@ -0,0 +1,2 @@
+
+Trace_tef__Event (trace-tef.Trace_tef__Event) Module Trace_tef__Event
\ No newline at end of file
diff --git a/trace-tef/Trace_tef_tldrs/index.html b/trace-tef/Trace_tef_tldrs/index.html
new file mode 100644
index 0000000..e24da30
--- /dev/null
+++ b/trace-tef/Trace_tef_tldrs/index.html
@@ -0,0 +1,2 @@
+
+Trace_tef_tldrs (trace-tef.Trace_tef_tldrs) Module Trace_tef_tldrs
val collector : out:[ `File of string ] -> unit -> Trace_core.collectorMake a collector that writes into the given output. See setup for more details.
Output for tracing.
`File "foo" will enable tracing and print events into file named "foo". The file is only written at exit.
val setup : ?out:[ output | `Env ] -> unit -> unitsetup () installs the collector depending on out.
val with_setup : ?out:[ output | `Env ] -> unit -> (unit -> 'a) -> 'awith_setup () f (optionally) sets a collector up, calls f(), and makes sure to shutdown before exiting.
\ No newline at end of file
diff --git a/trace-tef/index.html b/trace-tef/index.html
index 87bba1c..4ca9b76 100644
--- a/trace-tef/index.html
+++ b/trace-tef/index.html
@@ -1,2 +1,2 @@
-index (trace-tef.index) Package trace-tef
\ No newline at end of file
+index (trace-tef.index) Package trace-tef
\ No newline at end of file