package ppxlib

  1. Overview
  2. Docs
Standard infrastructure for ppx rewriters

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ppxlib-0.34.0.tbz
sha256=d77d97165a158d7ae56b7c0387cd04e9927d7e7e797ca1039ffb5bb17a6661a7
sha512=84954f375b0c3ed063c874c47cc2597cceea338de0f567f64f340bd4e3569ef88421369b92bd5830701216bcdb88d78f50f3896c8edeb13250f0e7337c106b7d

doc/ppxlib/Ppxlib/Deriving/index.html

Module Ppxlib.DerivingSource

Deriving code from type declarations.

Sourcemodule Args : sig ... end

Specification of generator arguments

Generator registration
Sourcetype t

Type of registered derivers

Sourcemodule Generator : sig ... end
Sourceval add : ?str_type_decl: (Astlib.Ast_500.Parsetree.structure_item list, Astlib.Ast_500.Asttypes.rec_flag * Astlib.Ast_500.Parsetree.type_declaration list) Generator.t -> ?str_class_type_decl: (Astlib.Ast_500.Parsetree.structure_item list, Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list) Generator.t -> ?str_type_ext: (Astlib.Ast_500.Parsetree.structure_item list, Astlib.Ast_500.Parsetree.type_extension) Generator.t -> ?str_exception: (Astlib.Ast_500.Parsetree.structure_item list, Astlib.Ast_500.Parsetree.type_exception) Generator.t -> ?str_module_type_decl: (Astlib.Ast_500.Parsetree.structure_item list, Astlib.Ast_500.Parsetree.module_type_declaration) Generator.t -> ?sig_type_decl: (Astlib.Ast_500.Parsetree.signature_item list, Astlib.Ast_500.Asttypes.rec_flag * Astlib.Ast_500.Parsetree.type_declaration list) Generator.t -> ?sig_class_type_decl: (Astlib.Ast_500.Parsetree.signature_item list, Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list) Generator.t -> ?sig_type_ext: (Astlib.Ast_500.Parsetree.signature_item list, Astlib.Ast_500.Parsetree.type_extension) Generator.t -> ?sig_exception: (Astlib.Ast_500.Parsetree.signature_item list, Astlib.Ast_500.Parsetree.type_exception) Generator.t -> ?sig_module_type_decl: (Astlib.Ast_500.Parsetree.signature_item list, Astlib.Ast_500.Parsetree.module_type_declaration) Generator.t -> ?extension: (loc:Location.t -> path:string -> Astlib.Ast_500.Parsetree.core_type -> Astlib.Ast_500.Parsetree.expression) -> 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.

Sourceval add_alias : string -> ?str_type_decl:t list -> ?str_class_type_decl:t list -> ?str_type_ext:t list -> ?str_exception:t list -> ?str_module_type_decl:t list -> ?sig_type_decl:t list -> ?sig_class_type_decl:t list -> ?sig_type_ext:t list -> ?sig_exception:t list -> ?sig_module_type_decl:t list -> t 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.

Sourceval ignore : t -> unit

Ignore a deriver. So that one can write: Deriving.add ... |> Deriving.ignore