Source file encoding_502.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module Ext_name = struct
let ptyp_open = "ppxlib.migration.ptyp_open_502"
end
let invalid_encoding ~loc name =
Location.raise_errorf ~loc "Invalid %s encoding" name
module To_501 = struct
open Ast_501.Asttypes
open Ast_501.Parsetree
let encode_ptyp_open ~loc ((name, typ) : Longident.t Location.loc * core_type)
: extension =
let typ = Ptyp_constr (name, [ typ ]) in
let ctyp =
{
ptyp_desc = typ;
ptyp_loc = loc;
ptyp_attributes = [];
ptyp_loc_stack = [];
}
in
let payload = PTyp ctyp in
let ext = { txt = Ext_name.ptyp_open; loc } in
(ext, payload)
let decode_ptyp_open ~loc = function
| PTyp { ptyp_desc = Ptyp_constr (name, [ typ ]); _ } -> (name, typ)
| _ -> invalid_encoding ~loc Ext_name.ptyp_open
end