Deriving code from type declarations
val add : ?str_type_decl:(Ppxlib__.Import.structure, Ppxlib__.Import.rec_flag * Ppxlib__.Import.type_declaration Ppxlib__.Import.list) Generator.t ‑> ?str_type_ext:(Ppxlib__.Import.structure, Ppxlib__.Import.type_extension) Generator.t ‑> ?str_exception:(Ppxlib__.Import.structure, Ppxlib__.Import.extension_constructor) Generator.t ‑> ?sig_type_decl:(Ppxlib__.Import.signature, Ppxlib__.Import.rec_flag * Ppxlib__.Import.type_declaration Ppxlib__.Import.list) Generator.t ‑> ?sig_type_ext:(Ppxlib__.Import.signature, Ppxlib__.Import.type_extension) Generator.t ‑> ?sig_exception:(Ppxlib__.Import.signature, Ppxlib__.Import.extension_constructor) Generator.t ‑> ?extension:(loc:Ppxlib.Location.t ‑> path:Ppxlib__.Import.string ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.expression) ‑> Ppxlib__.Import.string ‑> t
Register a new deriving generator.
The various arguments are for the various items on which derivers can be attached in structure and signatures.
We distinguish exception
from type_extension
as exception E
is not exactly the same as type exn += E
. Indeed if the type
exn
is redefined, then type exn += E
will add E
to the new
exn
type while exception E
will add E
to the predefined exn
type.
extension
register an expander for extension with the name of
the deriver. This is here mostly to support the ppx_deriving
backend.
val add_alias : Ppxlib__.Import.string ‑> ?str_type_decl:t Ppxlib__.Import.list ‑> ?str_type_ext:t Ppxlib__.Import.list ‑> ?str_exception:t Ppxlib__.Import.list ‑> ?sig_type_decl:t Ppxlib__.Import.list ‑> ?sig_type_ext:t Ppxlib__.Import.list ‑> ?sig_exception:t Ppxlib__.Import.list ‑> t Ppxlib__.Import.list ‑> t
add_alias name set
add an alias. When the user write the alias,
all the generator of set
will be used instead. It is possible to
override the set for any of the context by passing the specific set
in the approriate optional argument of add_alias
.
val ignore : t ‑> Ppxlib__.Import.unit
Ignore a deriver. So that one can write: Deriving.add ... |>
Deriving.ignore