sig
type tyvar = string Location.loc
type deriver = {
name : string;
core_type : (Parsetree.core_type -> Parsetree.expression) option;
type_decl_str :
options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_declaration list -> Parsetree.structure;
type_ext_str :
options:(string * Parsetree.expression) list ->
path:string list -> Parsetree.type_extension -> Parsetree.structure;
module_type_decl_str :
options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.module_type_declaration -> Parsetree.structure;
type_decl_sig :
options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_declaration list -> Parsetree.signature;
type_ext_sig :
options:(string * Parsetree.expression) list ->
path:string list -> Parsetree.type_extension -> Parsetree.signature;
module_type_decl_sig :
options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.module_type_declaration -> Parsetree.signature;
}
val register : Ppx_deriving.deriver -> unit
val add_register_hook : (Ppx_deriving.deriver -> unit) -> unit
val derivers : unit -> Ppx_deriving.deriver list
val create :
string ->
?core_type:(Parsetree.core_type -> Parsetree.expression) ->
?type_ext_str:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_extension -> Parsetree.structure) ->
?type_ext_sig:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_extension -> Parsetree.signature) ->
?type_decl_str:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_declaration list -> Parsetree.structure) ->
?type_decl_sig:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.type_declaration list -> Parsetree.signature) ->
?module_type_decl_str:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.module_type_declaration ->
Parsetree.structure) ->
?module_type_decl_sig:(options:(string * Parsetree.expression) list ->
path:string list ->
Parsetree.module_type_declaration ->
Parsetree.signature) ->
unit -> Ppx_deriving.deriver
val lookup : string -> Ppx_deriving.deriver option
val raise_errorf :
?sub:Location.error list ->
?if_highlight:string ->
?loc:Location.t -> ('a, unit, string, 'b) Pervasives.format4 -> 'a
val string_of_core_type : Parsetree.core_type -> string
module Arg :
sig
type 'a conv = Parsetree.expression -> ('a, string) Result.result
val expr : Parsetree.expression Ppx_deriving.Arg.conv
val bool : bool Ppx_deriving.Arg.conv
val int : int Ppx_deriving.Arg.conv
val string : string Ppx_deriving.Arg.conv
val char : char Ppx_deriving.Arg.conv
val enum : string list -> string Ppx_deriving.Arg.conv
val list : 'a Ppx_deriving.Arg.conv -> 'a list Ppx_deriving.Arg.conv
val get_attr :
deriver:string ->
'a Ppx_deriving.Arg.conv -> Parsetree.attribute option -> 'a option
val get_flag : deriver:string -> Parsetree.attribute option -> bool
val get_expr :
deriver:string ->
'a Ppx_deriving.Arg.conv -> Parsetree.expression -> 'a
end
type quoter
val create_quoter : unit -> Ppx_deriving.quoter
val quote :
quoter:Ppx_deriving.quoter ->
Parsetree.expression -> Parsetree.expression
val sanitize :
?module_:Longident.t ->
?quoter:Ppx_deriving.quoter ->
Parsetree.expression -> Parsetree.expression
val with_quoter :
(Ppx_deriving.quoter -> 'a -> Parsetree.expression) ->
'a -> Parsetree.expression
val expand_path : path:string list -> string -> string
val path_of_type_decl :
path:string list -> Parsetree.type_declaration -> string list
val mangle_type_decl :
?fixpoint:string ->
[ `Prefix of string
| `PrefixSuffix of string * string
| `Suffix of string ] -> Parsetree.type_declaration -> string
val mangle_lid :
?fixpoint:string ->
[ `Prefix of string
| `PrefixSuffix of string * string
| `Suffix of string ] -> Longident.t -> Longident.t
val attr :
deriver:string ->
string -> Parsetree.attributes -> Parsetree.attribute option
val attr_warning : Parsetree.expression -> Parsetree.attribute
val free_vars_in_core_type : Parsetree.core_type -> Ppx_deriving.tyvar list
val remove_pervasives :
deriver:string -> Parsetree.core_type -> Parsetree.core_type
val fresh_var : string list -> string
val fold_left_type_decl :
('a -> Ppx_deriving.tyvar -> 'a) ->
'a -> Parsetree.type_declaration -> 'a
val fold_right_type_decl :
(Ppx_deriving.tyvar -> 'a -> 'a) ->
Parsetree.type_declaration -> 'a -> 'a
val fold_left_type_ext :
('a -> Ppx_deriving.tyvar -> 'a) -> 'a -> Parsetree.type_extension -> 'a
val fold_right_type_ext :
(Ppx_deriving.tyvar -> 'a -> 'a) -> Parsetree.type_extension -> 'a -> 'a
val poly_fun_of_type_decl :
Parsetree.type_declaration ->
Parsetree.expression -> Parsetree.expression
val poly_fun_of_type_ext :
Parsetree.type_extension -> Parsetree.expression -> Parsetree.expression
val poly_apply_of_type_decl :
Parsetree.type_declaration ->
Parsetree.expression -> Parsetree.expression
val poly_apply_of_type_ext :
Parsetree.type_extension -> Parsetree.expression -> Parsetree.expression
val poly_arrow_of_type_decl :
(Parsetree.core_type -> Parsetree.core_type) ->
Parsetree.type_declaration -> Parsetree.core_type -> Parsetree.core_type
val poly_arrow_of_type_ext :
(Parsetree.core_type -> Parsetree.core_type) ->
Parsetree.type_extension -> Parsetree.core_type -> Parsetree.core_type
val core_type_of_type_decl :
Parsetree.type_declaration -> Parsetree.core_type
val core_type_of_type_ext : Parsetree.type_extension -> Parsetree.core_type
val instantiate :
string list ->
Parsetree.type_declaration ->
Parsetree.core_type * string list * string list
val fold_exprs :
?unit:Parsetree.expression ->
(Parsetree.expression -> Parsetree.expression -> Parsetree.expression) ->
Parsetree.expression list -> Parsetree.expression
val seq_reduce :
?sep:Parsetree.expression ->
Parsetree.expression -> Parsetree.expression -> Parsetree.expression
val binop_reduce :
Parsetree.expression ->
Parsetree.expression -> Parsetree.expression -> Parsetree.expression
val strong_type_of_type : Parsetree.core_type -> Parsetree.core_type
val mapper : Ast_mapper.mapper
val hash_variant : string -> int
end