Skip to content

Ppx: use ppx_map to remove some repetition in combinators

Note: Previous MR on ppxs was using ppx_import: but since update to OCaml 4.12.1, now ppx_import has some conflicts. It's currently being ported to ppxlib here, so we can wait until that's definitive to merge that part of ppxs.

Here only the ppx_map part is proposed to be merged, which does not use ppx_import. Basically, it maps an expression, e.g.

let t_signature  ?loc ?core () : type_expression = t_constant ?loc ?core signature_name []
let t_chain_id   ?loc ?core () : type_expression = t_constant ?loc ?core chain_id_name []
let t_string     ?loc ?core () : type_expression = t_constant ?loc ?core string_name []
let t_bytes      ?loc ?core () : type_expression = t_constant ?loc ?core bytes_name []
let t_key        ?loc ?core () : type_expression = t_constant ?loc ?core key_name []
let t_key_hash   ?loc ?core () : type_expression = t_constant ?loc ?core key_hash_name []
let t_int        ?loc ?core () : type_expression = t_constant ?loc ?core int_name []
let t_address    ?loc ?core () : type_expression = t_constant ?loc ?core address_name []
let t_operation  ?loc ?core () : type_expression = t_constant ?loc ?core operation_name []
let t_nat        ?loc ?core () : type_expression = t_constant ?loc ?core nat_name []
let t_mutez      ?loc ?core () : type_expression = t_constant ?loc ?core tez_name []
let t_timestamp  ?loc ?core () : type_expression = t_constant ?loc ?core timestamp_name []
let t_unit       ?loc ?core () : type_expression = t_constant ?loc ?core unit_name []
let t_bls12_381_g1 ?loc ?core () : type_expression = t_constant ?loc ?core bls12_381_g1_name []
let t_bls12_381_g2 ?loc ?core () : type_expression = t_constant ?loc ?core bls12_381_g2_name []
let t_bls12_381_fr ?loc ?core () : type_expression = t_constant ?loc ?core bls12_381_fr_name []
let t_never       ?loc ?core () : type_expression = t_constant ?loc ?core never_name []
let t_pvss_key ?loc ?core () : type_expression = t_constant ?loc ?core pvss_key_name []
let t_baker_hash ?loc ?core () : type_expression = t_constant ?loc ?core baker_hash_name []
let t_chest_key ?loc ?core () : type_expression = t_constant ?loc ?core chest_key_name []
let t_chest ?loc ?core () : type_expression = t_constant ?loc ?core chest_name []

can be reduced to a map:

let t__type_ ?loc ?core () : type_expression = t_constant ?loc ?core _type__name []
[@@map (_type_, ("signature","chain_id", "string", "bytes", "key", "key_hash", "int", "address", "operation", "nat", "tez", "timestamp", "unit", "bls12_381_g1", "bls12_381_g2", "bls12_381_fr", "never", "mutation", "failure", "pvss_key", "baker_hash", "chest_key", "chest"))]
  • has a changelog entry
Edited by E. Rivas

Merge request reports

Loading