summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Frisch <alain@frisch.fr>2013-09-26 08:36:31 +0000
committerAlain Frisch <alain@frisch.fr>2013-09-26 08:36:31 +0000
commit13dd4d972d4c081199c1e5a11ce5e923ecf61584 (patch)
tree63160a127c857be40342d2dfb624c0cd45a730c8
parent9e09513778f808582678433ba93f82dc61e490e0 (diff)
downloadocaml-13dd4d972d4c081199c1e5a11ce5e923ecf61584.tar.gz
Adapt one more example.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14185 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--experimental/frisch/ppx_builder.ml31
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