package ppxlib

  1. Overview
  2. Docs
Standard infrastructure for ppx rewriters

Install

dune-project
 Dependency

Authors

Maintainers

Sources

a6fadbd212f3cd7d5d8dcfefc46c884f710fedc0.tar.gz
sha256=25e81f2085ad19688f7056c6df49ca48b3df4cea8304ba3be2550e172d59bfec
sha512=cfdaa06fd32d206f72de05a5289d33ec85fa6bdf7c5be7c85874a16d9e154cdc080465453b60fe7f6c01589eb92e4296b18067413ac2d8dec47b9539f55e301e

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

Source file encoding_503.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
module Ext_name = struct
  let ppat_effect = "ppxlib.migration.ppat_effect_503"
end

let invalid_encoding ~loc name =
  Location.raise_errorf ~loc "Invalid %s encoding" name

module To_502 = struct
  let encode_ppat_effect ~loc ~effect_ ~k =
    let open Ast_502.Parsetree in
    Ppat_extension
      ( Location.{ txt = Ext_name.ppat_effect; loc },
        PPat
          ( {
              ppat_desc = Ppat_tuple [ effect_; k ];
              ppat_attributes = [];
              ppat_loc_stack = [];
              ppat_loc = loc;
            },
            None ) )

  let decode_ppat_effect ~loc payload =
    let open Ast_502.Parsetree in
    match payload with
    | PPat ({ ppat_desc = Ppat_tuple [ effect_; cont ]; _ }, None) ->
        (effect_, cont)
    | _ -> invalid_encoding ~loc Ext_name.ppat_effect
end