32 lines
865 B
OCaml
32 lines
865 B
OCaml
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 ()
|