package ppxlib

  1. Overview
  2. Docs
Standard library for ppx rewriters

Install

Dune Dependency

Authors

Maintainers

Sources

ppxlib-0.29.1.tbz
sha256=c8ea8c8770414fdba6612e7f2d814b21a493daa974ea862a90c8e6c766e5dd79
sha512=edc468e9111cc26e31825e475fd72f55123a22fe86548e07e7d111796fecb8d60359b1b53c7eac383e5e2114cbae74dfd9c166f330e84cbeab4ddfd5797e322f

doc/ppxlib/Ppxlib/Extension/index.html

Module Ppxlib.ExtensionSource

Declare extenders to rewrite extension nodes.

Sourcetype (_, _) equality =
  1. | Eq : ('a, 'a) equality
  2. | Ne : (_, _) equality
Sourcemodule Context : sig ... end
Sourcetype t

Type of declared extensions.

Sourceval declare : string -> 'context Context.t -> (Astlib.Ast_500.Parsetree.payload, 'a, 'context) Ast_pattern.t -> (loc:Location.t -> path:string -> 'a) -> t

declare name context pattern expander declares the extension names name for context.

expander is responsible for producing the code to replace the extension in the AST. It receives as argument:

  • loc: the location of the enclosing node. For instance for expression it is the pexp_loc field
  • path: the current module path
Sourceval declare_with_path_arg : string -> 'context Context.t -> (Astlib.Ast_500.Parsetree.payload, 'a, 'context) Ast_pattern.t -> (loc:Location.t -> path:string -> arg:Longident.t Ppxlib_ast.Asttypes.loc option -> 'a) -> t

Same as declare except that the extension name takes an additional path argument. The path is the part of the name that start with a capitalized component. For instance in the following, the extension "map" would receive the path argument Foo.Bar:

  let%map.Foo.Bar x = 1 in
  ...
Sourceval declare_inline : string -> 'context Context.t -> (Astlib.Ast_500.Parsetree.payload, 'a, 'context list) Ast_pattern.t -> (loc:Location.t -> path:string -> 'a) -> t

Inline the result of the expansion into its parent. Only works for these contexts:

  • class_field
  • class_type_field
  • signature_item
  • structure_item
Sourceval declare_inline_with_path_arg : string -> 'context Context.t -> (Astlib.Ast_500.Parsetree.payload, 'a, 'context list) Ast_pattern.t -> (loc:Location.t -> path:string -> arg:Longident.t Ppxlib_ast.Asttypes.loc option -> 'a) -> t
Sourcemodule For_context : sig ... end

This module is used to implement Context_free.map_top_down

Sourceval filter_by_context : 'a Context.t -> t list -> 'a For_context.t list

Given a context and a list of extension expander, returns all the ones that are for this context.

Sourcemodule Expert : sig ... end

This module allows to declare extensions that do not produce a value of the context type. This is typically useful for extensions point that depends on more things from the context than the path and location.

Sourceval check_unused : Ast_traverse.iter
Sourceval collect_unhandled_extension_errors : Location.Error.t list Ast_traverse.fold
Sourcemodule V2 : sig ... end
Sourcemodule V3 : sig ... end
OCaml

Innovation. Community. Security.