package ppxlib

  1. Overview
  2. Docs
Standard infrastructure for ppx rewriters

Install

dune-project
 Dependency

Authors

Maintainers

Sources

2e150834476230e99e48dfdf34c5e4a1ea6e749b.tar.gz
sha256=591d694609fed01783c9f360602e8660ae0e49eb33b7074c1317a261e00c6cdb
sha512=e15e956a114ab3f61dfa8f7eceed088082a116f3b6fc832b901729f611258af3b39bda748b2046b4886f429617aa64802f90e0520db82302443ecbba461970b2

doc/src/ppxlib.astlib/encoding_502.ml.html

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
module Ext_name = struct
  let ptyp_open = "ppxlib.migration.ptyp_open_502"
end

let invalid_encoding ~loc name = Error.invalid_encoding ~loc ~version:"5.2" 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