123456789101112131415161718192021222324252627282930313233openPpxlibmoduleBuilder=Ast_builder.Defaultletexpander~ctxtel=letloc=Expansion_context.Extension.extension_point_locctxtinletlog_loc,log_type=matche.pexp_descwith|Pexp_ident{loc;txt=Lidentlog_type}->(loc,log_type)|_->(loc,"info")inBuilder.eapply~loc(Builder.pexp_ident~loc:log_loc{txt=Ldot(Lident"Logs",log_type);loc})[Builder.pexp_fun~locNolabelNone(Builder.ppat_var~loc{txt="m";loc})(Builder.eapply~loc(Builder.pexp_ident~loc{txt=Lident"m";loc})(List.mapsndl));]letextension=letpattern=letopenAst_patternin(* this grabs the first argument from the apply and
then passes it into Log.sexp's [log] parameter.
All the arguments of apply are parsed as a message. *)pstr(pstr_eval(pexp_apply____)nil^::nil)inContext_free.Rule.extension(Extension.V3.declare"log"Expressionpatternexpander)let()=Driver.register_transformation~rules:[extension]"logs-ppx"