File: deriver.ml

package info (click to toggle)
ppxlib 0.37.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,804 kB
  • sloc: ml: 66,587; sh: 103; makefile: 40; python: 36
file content (32 lines) | stat: -rw-r--r-- 865 bytes parent folder | download
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
31
32
open Ppxlib

let derive_a_string ~ctxt (_rec_flag, _type_declarations) =
  let loc = Expansion_context.Deriver.derived_item_loc ctxt in
  let open Ast_builder.Default in
  [
    pstr_value ~loc Nonrecursive
      [
        {
          pvb_pat = ppat_any ~loc;
          pvb_expr = estring ~loc "derived_string";
          pvb_attributes = [];
          pvb_loc = loc;
          pvb_constraint = None;
        };
      ];
  ]

let impl_generator_derive_a_string =
  Deriving.Generator.V2.make_noarg derive_a_string

let deriver_for_a_string =
  Deriving.add "a_string" ~str_type_decl:impl_generator_derive_a_string

let impl_generator_dependent =
  Deriving.Generator.V2.make_noarg ~deps:[ deriver_for_a_string ]
    derive_a_string

let _dependent_deriver =
  Deriving.add "a_dependent_string" ~str_type_decl:impl_generator_dependent

let () = Driver.standalone ()