123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138(**************************************************************************)(* *)(* OCaml Migrate Parsetree *)(* *)(* Frédéric Bour *)(* *)(* Copyright 2017 Institut National de Recherche en Informatique et *)(* en Automatique (INRIA). *)(* *)(* All rights reserved. This file is distributed under the terms of *)(* the GNU Lesser General Public License version 2.1, with the *)(* special exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)includeMigrate_parsetree_407_408_migrate(*$ open Printf
let fields = [
"attribute"; "attributes"; "case"; "cases"; "class_declaration";
"class_description"; "class_expr"; "class_field"; "class_signature";
"class_structure"; "class_type"; "class_type_declaration";
"class_type_field"; "constructor_declaration"; "expr"; "extension";
"extension_constructor"; "include_declaration"; "include_description";
"label_declaration"; "location"; "module_binding"; "module_declaration";
"module_expr"; "module_type"; "module_type_declaration";
"open_description"; "pat"; "signature"; "signature_item"; "structure";
"structure_item"; "typ"; "type_declaration"; "type_extension";
"type_kind"; "value_binding"; "value_description";
"with_constraint"; "payload"
]
let foreach_field f =
printf "\n";
List.iter f fields
*)(*$*)letcopy_mapper=fun({From.Ast_mapper.(*$ foreach_field (printf "%s;\n")*)attribute;attributes;case;cases;class_declaration;class_description;class_expr;class_field;class_signature;class_structure;class_type;class_type_declaration;class_type_field;constructor_declaration;expr;extension;extension_constructor;include_declaration;include_description;label_declaration;location;module_binding;module_declaration;module_expr;module_type;module_type_declaration;open_description;pat;signature;signature_item;structure;structure_item;typ;type_declaration;type_extension;type_kind;value_binding;value_description;with_constraint;payload;(*$*)}asmapper)->letmoduleDef=Migrate_parsetree_definletmigration_errorlocationfeature=raise(Def.Migration_error(feature,location))inletmoduleR=Migrate_parsetree_408_407_migratein{To.Ast_mapper.(*$ foreach_field (fun s ->
printf
"%s = (fun _ x -> copy_%s (%s mapper (R.copy_%s x)));\n" s s s s)
*)attribute=(fun_x->copy_attribute(attributemapper(R.copy_attributex)));attributes=(fun_x->copy_attributes(attributesmapper(R.copy_attributesx)));case=(fun_x->copy_case(casemapper(R.copy_casex)));cases=(fun_x->copy_cases(casesmapper(R.copy_casesx)));class_declaration=(fun_x->copy_class_declaration(class_declarationmapper(R.copy_class_declarationx)));class_description=(fun_x->copy_class_description(class_descriptionmapper(R.copy_class_descriptionx)));class_expr=(fun_x->copy_class_expr(class_exprmapper(R.copy_class_exprx)));class_field=(fun_x->copy_class_field(class_fieldmapper(R.copy_class_fieldx)));class_signature=(fun_x->copy_class_signature(class_signaturemapper(R.copy_class_signaturex)));class_structure=(fun_x->copy_class_structure(class_structuremapper(R.copy_class_structurex)));class_type=(fun_x->copy_class_type(class_typemapper(R.copy_class_typex)));class_type_declaration=(fun_x->copy_class_type_declaration(class_type_declarationmapper(R.copy_class_type_declarationx)));class_type_field=(fun_x->copy_class_type_field(class_type_fieldmapper(R.copy_class_type_fieldx)));constructor_declaration=(fun_x->copy_constructor_declaration(constructor_declarationmapper(R.copy_constructor_declarationx)));expr=(fun_x->copy_expr(exprmapper(R.copy_exprx)));extension=(fun_x->copy_extension(extensionmapper(R.copy_extensionx)));extension_constructor=(fun_x->copy_extension_constructor(extension_constructormapper(R.copy_extension_constructorx)));include_declaration=(fun_x->copy_include_declaration(include_declarationmapper(R.copy_include_declarationx)));include_description=(fun_x->copy_include_description(include_descriptionmapper(R.copy_include_descriptionx)));label_declaration=(fun_x->copy_label_declaration(label_declarationmapper(R.copy_label_declarationx)));location=(fun_x->copy_location(locationmapper(R.copy_locationx)));module_binding=(fun_x->copy_module_binding(module_bindingmapper(R.copy_module_bindingx)));module_declaration=(fun_x->copy_module_declaration(module_declarationmapper(R.copy_module_declarationx)));module_expr=(fun_x->copy_module_expr(module_exprmapper(R.copy_module_exprx)));module_type=(fun_x->copy_module_type(module_typemapper(R.copy_module_typex)));module_type_declaration=(fun_x->copy_module_type_declaration(module_type_declarationmapper(R.copy_module_type_declarationx)));open_description=(fun_x->copy_open_description(open_descriptionmapper(R.copy_open_descriptionx)));pat=(fun_x->copy_pat(patmapper(R.copy_patx)));signature=(fun_x->copy_signature(signaturemapper(R.copy_signaturex)));signature_item=(fun_x->copy_signature_item(signature_itemmapper(R.copy_signature_itemx)));structure=(fun_x->copy_structure(structuremapper(R.copy_structurex)));structure_item=(fun_x->copy_structure_item(structure_itemmapper(R.copy_structure_itemx)));typ=(fun_x->copy_typ(typmapper(R.copy_typx)));type_declaration=(fun_x->copy_type_declaration(type_declarationmapper(R.copy_type_declarationx)));type_extension=(fun_x->copy_type_extension(type_extensionmapper(R.copy_type_extensionx)));type_kind=(fun_x->copy_type_kind(type_kindmapper(R.copy_type_kindx)));value_binding=(fun_x->copy_value_binding(value_bindingmapper(R.copy_value_bindingx)));value_description=(fun_x->copy_value_description(value_descriptionmapper(R.copy_value_descriptionx)));with_constraint=(fun_x->copy_with_constraint(with_constraintmapper(R.copy_with_constraintx)));payload=(fun_x->copy_payload(payloadmapper(R.copy_payloadx)));(*$*)(* The following ones were introduced in 4.08. *)binding_op=(fun_x->migration_errorx.pbop_op.Location.locDef.Pexp_letop);module_substitution=(fun_x->migration_errorx.pms_locDef.Psig_modsubst);open_declaration=(fun_x->migration_errorx.popen_locDef.Pexp_open);type_exception=(fun_x->migration_errorx.ptyexn_locDef.Psig_typesubst);}