From cf2a9850735c1f47458357a9f82660bcba17c746 Mon Sep 17 00:00:00 2001 From: Josh Berdine Date: Wed, 17 Oct 2018 02:24:16 -0700 Subject: [PATCH] [sledge] Add Trace.{printf,fprintf,kprintf} Reviewed By: mbouaziz Differential Revision: D10389478 fbshipit-source-id: 4fd3ff6da --- sledge/src/ppx_trace/ppx_trace.ml | 24 +++++++++++++----------- sledge/src/trace/trace.ml | 10 ++++++++++ sledge/src/trace/trace.mli | 9 +++++++++ 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/sledge/src/ppx_trace/ppx_trace.ml b/sledge/src/ppx_trace/ppx_trace.ml index a567e750d..9a0cd914a 100644 --- a/sledge/src/ppx_trace/ppx_trace.ml +++ b/sledge/src/ppx_trace/ppx_trace.ml @@ -81,15 +81,10 @@ let mapper = match exp.pexp_desc with | Pexp_extension ({txt= "debug"; loc}, PStr []) -> ebool ~loc !debug | Pexp_extension - ( {txt= "Trace.call"; loc= call_loc} - , PStr [{pstr_desc= Pstr_eval (call_fun, []); _}] ) -> - if not !debug then eunit ~loc:exp.pexp_loc - else - pexp_apply ~loc:exp.pexp_loc - (evar ~loc:call_loc "Trace.call") - (append_here_args [(Nolabel, call_fun)]) - | Pexp_extension - ( {txt= "Trace.info"; loc= info_loc} + ( { txt= + ( "Trace.info" | "Trace.printf" | "Trace.fprintf" + | "Trace.kprintf" ) as txt + ; loc } , PStr [{pstr_desc= Pstr_eval (arg, []); _}] ) -> if not !debug then eunit ~loc:exp.pexp_loc else @@ -98,9 +93,16 @@ let mapper = | Pexp_apply (op, args) -> (Nolabel, op) :: args | _ -> [(Nolabel, arg)] in - pexp_apply ~loc:exp.pexp_loc - (evar ~loc:info_loc "Trace.info") + pexp_apply ~loc:exp.pexp_loc (evar ~loc txt) (append_here_args args) + | Pexp_extension + ( {txt= "Trace.call"; loc= call_loc} + , PStr [{pstr_desc= Pstr_eval (call_fun, []); _}] ) -> + if not !debug then eunit ~loc:exp.pexp_loc + else + pexp_apply ~loc:exp.pexp_loc + (evar ~loc:call_loc "Trace.call") + (append_here_args [(Nolabel, call_fun)]) | Pexp_extension ( {txt= "Trace.retn"; loc= retn_loc} , PStr [{pstr_desc= Pstr_eval (retn_fun, []); _}] ) -> diff --git a/sledge/src/trace/trace.ml b/sledge/src/trace/trace.ml index 25e720310..0f31b9c7b 100644 --- a/sledge/src/trace/trace.ml +++ b/sledge/src/trace/trace.ml @@ -54,6 +54,16 @@ let enabled mod_name fun_name = | None -> trace_all ) ) | None -> trace_all +let kprintf mod_name fun_name k fmt = + if enabled mod_name fun_name then Format.kfprintf k fs fmt + else Format.ifprintf fs fmt + +let fprintf mod_name fun_name fs fmt = + if enabled mod_name fun_name then Format.fprintf fs fmt + else Format.ifprintf fs fmt + +let printf mod_name fun_name fmt = fprintf mod_name fun_name fs fmt + let info mod_name fun_name fmt = if enabled mod_name fun_name then ( Format.fprintf fs "@\n@[<2>| " ; diff --git a/sledge/src/trace/trace.mli b/sledge/src/trace/trace.mli index 8c74e66fc..7f8bf6c24 100644 --- a/sledge/src/trace/trace.mli +++ b/sledge/src/trace/trace.mli @@ -27,6 +27,15 @@ val init : ?margin:int -> config:config -> unit -> unit type 'a printf = ('a, Formatter.t, unit) format -> 'a type pf = {pf: 'a. 'a printf} +val printf : string -> string -> 'a printf +(** Like [Format.printf], if enabled, otherwise like [Format.iprintf]. *) + +val fprintf : string -> string -> Formatter.t -> 'a printf +(** Like [Format.fprintf], if enabled, otherwise like [Format.ifprintf]. *) + +val kprintf : string -> string -> (Formatter.t -> unit) -> 'a printf +(** Like [Format.kprintf], if enabled, otherwise like [Format.ifprintf]. *) + val info : string -> string -> 'a printf (** Emit a message at the current indentation level, if enabled. *)