module Versions: Migrate_parsetree_versions
module type Ast = sig
.. end
Abstract view of a version of an OCaml Ast
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
_types = < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'x; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_structure = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'x; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_signature = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'x;
type_declaration : 'p; type_extension : 'q >
get_toplevel_phrase = 'x
type < case : 'a; core_type : 'x; expression : 'b; extension_constructor : 'c;
mapper : 'd; out_class_type : 'e; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_core_type = 'x
type < case : 'a; core_type : 'b; expression : 'x; extension_constructor : 'c;
mapper : 'd; out_class_type : 'e; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_expression = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'x; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_pattern = 'x
type < case : 'x; core_type : 'a; expression : 'b; extension_constructor : 'c;
mapper : 'd; out_class_type : 'e; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_case = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'x; type_extension : 'q >
get_type_declaration = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'x >
get_type_extension = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'x;
mapper : 'd; out_class_type : 'e; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_extension_constructor = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'x;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_value = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'x; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_type = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'x; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_class_type = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'x; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_module_type = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'x; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_sig_item = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'x; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_type_extension = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'x;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_out_phrase = 'x
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'x; out_class_type : 'e; out_module_type : 'f; out_phrase : 'g;
out_sig_item : 'h; out_type : 'i; out_type_extension : 'j; out_value : 'k;
pattern : 'l; signature : 'm; structure : 'n; toplevel_phrase : 'o;
type_declaration : 'p; type_extension : 'q >
get_mapper = 'x
type '_
witnesses
A version of the OCaml frontend packs the ast with type witnesses
so that equalities can be recovered dynamically.
type '_
migration_info
migration_info
is an opaque type that is used to generate migration
functions.
module type OCaml_version = sig
.. end
An OCaml frontend versions an Ast, version number and some witnesses for
conversion.
type < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
ocaml_version = (module Migrate_parsetree_versions.OCaml_version with type Ast.Ast_mapper.mapper =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_mapper and type Ast.Outcometree.out_class_type =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_class_type and type Ast.Outcometree.out_module_type =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_module_type and type Ast.Outcometree.out_phrase =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_phrase and type Ast.Outcometree.out_sig_item =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_sig_item and type Ast.Outcometree.out_type =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_type and type Ast.Outcometree.out_type_extension =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_type_extension and type Ast.Outcometree.out_value =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_out_value and type Ast.Parsetree.case =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_case and type Ast.Parsetree.core_type =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_core_type and type Ast.Parsetree.expression =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_expression and type Ast.Parsetree.extension_constructor =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_extension_constructor and type Ast.Parsetree.pattern =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_pattern and type Ast.Parsetree.signature =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_signature and type Ast.Parsetree.structure =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_structure and type Ast.Parsetree.toplevel_phrase =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_toplevel_phrase and type Ast.Parsetree.type_declaration =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_type_declaration and type Ast.Parsetree.type_extension =
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
get_type_extension)
Representing an ocaml version in type language
Concrete frontend instances
module OCaml_402: OCaml_version
with module Ast = Ast_402
val ocaml_402 : OCaml_402.types
ocaml_version
module OCaml_403: OCaml_version
with module Ast = Ast_403
val ocaml_403 : OCaml_403.types
ocaml_version
module OCaml_404: OCaml_version
with module Ast = Ast_404
val ocaml_404 : OCaml_404.types
ocaml_version
module OCaml_405: OCaml_version
with module Ast = Ast_405
val ocaml_405 : OCaml_405.types
ocaml_version
module OCaml_406: OCaml_version
with module Ast = Ast_406
val ocaml_406 : OCaml_406.types
ocaml_version
module OCaml_407: OCaml_version
with module Ast = Ast_407
val ocaml_407 : OCaml_407.types
ocaml_version
module OCaml_current: OCaml_405
val ocaml_current : OCaml_current.types ocaml_version
val all_versions : (module Migrate_parsetree_versions.OCaml_version) list
Migrating between different versions
type ('a, 'b)
type_comparison =
val compare_ocaml_version : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
ocaml_version ->
< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >
ocaml_version ->
(< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >,
< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >)
type_comparison
type (< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
, < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y;
out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1;
out_type_extension : 'c1; out_value : 'd1; pattern : 'e1;
signature : 'f1; structure : 'g1; toplevel_phrase : 'h1;
type_declaration : 'i1; type_extension : 'j1 >)
migration_functions = {
|
copy_structure : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_structure -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_structure ; |
|
copy_signature : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_signature -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_signature ; |
|
copy_toplevel_phrase : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_toplevel_phrase -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_toplevel_phrase ; |
|
copy_core_type : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_core_type -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_core_type ; |
|
copy_expression : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_expression -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_expression ; |
|
copy_pattern : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_pattern -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_pattern ; |
|
copy_case : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_case -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_case ; |
|
copy_type_declaration : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_type_declaration -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_type_declaration ; |
|
copy_type_extension : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_type_extension -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_type_extension ; |
|
copy_extension_constructor : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_extension_constructor -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_extension_constructor ; |
|
copy_out_value : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_value -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_value ; |
|
copy_out_type : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_type -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_type ; |
|
copy_out_class_type : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_class_type -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_class_type ; |
|
copy_out_module_type : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_module_type -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_module_type ; |
|
copy_out_sig_item : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_sig_item -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_sig_item ; |
|
copy_out_type_extension : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_type_extension -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_type_extension ; |
|
copy_out_phrase : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_out_phrase -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_out_phrase ; |
|
copy_mapper : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > get_mapper -> < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > get_mapper ; |
}
A record for migrating each AST construct between two known versions
val migration_identity : (< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >,
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >)
migration_functions
Migrating to the same version is no-op
val migration_compose : (< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >,
< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >)
migration_functions ->
(< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >,
< case : 'k1; core_type : 'l1; expression : 'm1;
extension_constructor : 'n1; mapper : 'o1; out_class_type : 'p1;
out_module_type : 'q1; out_phrase : 'r1; out_sig_item : 's1;
out_type : 't1; out_type_extension : 'u1; out_value : 'v1; pattern : 'w1;
signature : 'x1; structure : 'y1; toplevel_phrase : 'z1;
type_declaration : 'a2; type_extension : 'b2 >)
migration_functions ->
(< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >,
< case : 'k1; core_type : 'l1; expression : 'm1;
extension_constructor : 'n1; mapper : 'o1; out_class_type : 'p1;
out_module_type : 'q1; out_phrase : 'r1; out_sig_item : 's1;
out_type : 't1; out_type_extension : 'u1; out_value : 'v1; pattern : 'w1;
signature : 'x1; structure : 'y1; toplevel_phrase : 'z1;
type_declaration : 'a2; type_extension : 'b2 >)
migration_functions
Migrations can be composed
Represent the next or previous version of an Ast
type 'from
immediate_migration =
| |
No_migration : 'from0 immediate_migration |
| |
Immediate_migration : (< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r >, < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >) migration_functions * < case : 's; core_type : 't; expression : 'u; extension_constructor : 'v; mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z; out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1; out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1; toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 > ocaml_version -> < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd; mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h; out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l; pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p; type_declaration : 'q; type_extension : 'r > immediate_migration |
val immediate_migration : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
ocaml_version ->
[< `Next | `Previous ] ->
< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
immediate_migration
val migrate : < case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >
ocaml_version ->
< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >
ocaml_version ->
(< case : 'a; core_type : 'b; expression : 'c; extension_constructor : 'd;
mapper : 'e; out_class_type : 'f; out_module_type : 'g; out_phrase : 'h;
out_sig_item : 'i; out_type : 'j; out_type_extension : 'k; out_value : 'l;
pattern : 'm; signature : 'n; structure : 'o; toplevel_phrase : 'p;
type_declaration : 'q; type_extension : 'r >,
< case : 's; core_type : 't; expression : 'u; extension_constructor : 'v;
mapper : 'w; out_class_type : 'x; out_module_type : 'y; out_phrase : 'z;
out_sig_item : 'a1; out_type : 'b1; out_type_extension : 'c1;
out_value : 'd1; pattern : 'e1; signature : 'f1; structure : 'g1;
toplevel_phrase : 'h1; type_declaration : 'i1; type_extension : 'j1 >)
migration_functions
Convenience definitions
module Convert:
Module level migration