diff options
author | Alain Frisch <alain@frisch.fr> | 2013-09-26 08:36:31 +0000 |
---|---|---|
committer | Alain Frisch <alain@frisch.fr> | 2013-09-26 08:36:31 +0000 |
commit | 13dd4d972d4c081199c1e5a11ce5e923ecf61584 (patch) | |
tree | 63160a127c857be40342d2dfb624c0cd45a730c8 /experimental | |
parent | 9e09513778f808582678433ba93f82dc61e490e0 (diff) | |
download | ocaml-13dd4d972d4c081199c1e5a11ce5e923ecf61584.tar.gz |
Adapt one more example.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14185 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'experimental')
-rw-r--r-- | experimental/frisch/ppx_builder.ml | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/experimental/frisch/ppx_builder.ml b/experimental/frisch/ppx_builder.ml index 262274cb40..32d3edd9e3 100644 --- a/experimental/frisch/ppx_builder.ml +++ b/experimental/frisch/ppx_builder.ml @@ -78,20 +78,23 @@ module Main : sig end = struct let gen_builder tdecl = with_default_loc tdecl.ptype_loc (fun () -> gen_builder tdecl) - let builder = object(this) - inherit Ast_mapper.mapper - - method! structure l = - List.flatten - (List.map - (function - | {pstr_desc = Pstr_type tdecls; _} as i -> - i :: (List.flatten (List.map gen_builder tdecls)) - | i -> [this # structure_item i] - ) - l + let builder _args = + let open Ast_mapper in + let super = default_mapper in + {super + with + structure = + (fun this l -> + List.flatten + (List.map + (function + | {pstr_desc = Pstr_type tdecls; _} as i -> + i :: (List.flatten (List.map gen_builder tdecls)) + | i -> [structure_item this i] + ) l + ) ) - end + } - let () = Ast_mapper.main builder + let () = Ast_mapper.run_main builder end |