Module Migrate_parsetree_driver

State a rewriter can access

type extra = ..
type config = {
tool_name : string;
include_dirs : string list;
load_path : string list;
debug : bool;
for_package : string option;

Additional parameters that can be passed by a caller of rewrite_{signature,structure} to a specific register rewriter.

extras : extra list;
}
val make_config : tool_name:string -> ?⁠include_dirs:string list -> ?⁠load_path:string list -> ?⁠debug:bool -> ?⁠for_package:string -> ?⁠extras:extra list -> unit -> config
type cookies

Registering rewriters

type 'types rewriter = config -> cookies -> 'types Migrate_parsetree.Versions.get_mapper
val register : name:string -> ?⁠reset_args:(unit -> unit) -> ?⁠args:(Stdlib.Arg.key * Stdlib.Arg.spec * Stdlib.Arg.doc) list -> ?⁠position:int -> 'types Migrate_parsetree.Versions.ocaml_version -> 'types rewriter -> unit

Register a ppx rewriter. position is a integer that indicates when the ppx rewriter should be applied. It is guaranteed that if two ppx rewriters a and b have different position numbers, then the one with the lowest number will be applied first. The rewriting order of ppx rewriters with the same position number is not specified. The default position is 0.

Note that more different position numbers means more AST conversions and slower rewriting, so think twice before setting position to a non-zero number.

val registered_args : unit -> (Stdlib.Arg.key * Stdlib.Arg.spec * Stdlib.Arg.doc) list

Return the list of command line arguments registered by rewriters

val reset_args : unit -> unit

Call all the registered reset_args callbacks

Running registered rewriters

val run_as_ast_mapper : ?⁠exit_on_error:bool -> string list -> Ast_mapper.mapper
val run_as_ppx_rewriter : ?⁠exit_on_error:bool -> ?⁠argv:string array -> unit -> unit
val run_main : ?⁠exit_on_error:bool -> ?⁠argv:string array -> unit -> unit

Manual mapping

type some_signature =
| Sig : (module Migrate_parsetree.Versions.OCaml_version with type Ast.Parsetree.signature = 'concrete) * 'concrete -> some_signature
type some_structure =
| Str : (module Migrate_parsetree.Versions.OCaml_version with type Ast.Parsetree.structure = 'concrete) * 'concrete -> some_structure
val migrate_some_signature : 'version Migrate_parsetree.Versions.ocaml_version -> some_signature -> 'version Migrate_parsetree.Versions.get_signature
val migrate_some_structure : 'version Migrate_parsetree.Versions.ocaml_version -> some_structure -> 'version Migrate_parsetree.Versions.get_structure
val rewrite_signature : config -> 'version Migrate_parsetree.Versions.ocaml_version -> 'version Migrate_parsetree.Versions.get_signature -> some_signature
val rewrite_structure : config -> 'version Migrate_parsetree.Versions.ocaml_version -> 'version Migrate_parsetree.Versions.get_structure -> some_structure