From 483abc2aa4cda1b220614bfd634224d4ef69dbf3 Mon Sep 17 00:00:00 2001 From: Maxime Levillain Date: Fri, 13 Oct 2023 18:13:27 +0200 Subject: [PATCH] Add value binding extension for services --- src/ppx/ppx_common.ml | 3 +++ test/ppx/test_ppx_lib.ml | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ppx/ppx_common.ml b/src/ppx/ppx_common.ml index dab5118..1340309 100644 --- a/src/ppx/ppx_common.ml +++ b/src/ppx/ppx_common.ml @@ -422,6 +422,9 @@ let rec impl ?kind str = deprecate a.attr_name.txt; let service, _, _ = service_value ~client:true ~meth:a.attr_name.txt ~loc:a.attr_loc a.attr_payload in service :: acc + | Pstr_extension (({txt; loc}, PStr [ { pstr_desc = Pstr_value (_, [ { pvb_expr; pvb_pat= {ppat_desc=Ppat_var {txt=name; _}; _}; _} ]); _} ]), _) when List.mem txt methods -> + let service, _, _ = service_value ~name ~client:true ~meth:txt ~loc @@ PStr [ pstr_eval ~loc pvb_expr [] ] in + service :: acc | Pstr_extension (({txt; loc}, p), _) when List.mem txt methods -> let service, _, _ = service_value ~client:true ~meth:txt ~loc p in service :: acc diff --git a/test/ppx/test_ppx_lib.ml b/test/ppx/test_ppx_lib.ml index 1dcdbe9..85cdc62 100644 --- a/test/ppx/test_ppx_lib.ml +++ b/test/ppx/test_ppx_lib.ml @@ -1,2 +1,4 @@ -[%%post {path="/echo_input"; name="echo_input"; raw_input=["text/plain"]; - output=Json_encoding.(obj1 (req "test" string))}] +let%post echo_input = { + path="/echo_input"; raw_input=["text/plain"]; + output=Json_encoding.(obj1 (req "test" string)) +}