mirror of
https://github.com/CatalaLang/catala.git
synced 2024-11-08 07:51:43 +03:00
Improve trace printing
This commit is contained in:
parent
24e43861f8
commit
fce192be20
@ -64,24 +64,16 @@ let propagate_empty_error_list elist f =
|
|||||||
let indent_str = ref ""
|
let indent_str = ref ""
|
||||||
|
|
||||||
(** {1 Evaluation} *)
|
(** {1 Evaluation} *)
|
||||||
let print_log entry infos pos e =
|
let print_log lang entry infos pos e =
|
||||||
if Cli.globals.trace then
|
if Cli.globals.trace then
|
||||||
match entry with
|
match entry with
|
||||||
| VarDef _ ->
|
| VarDef _ ->
|
||||||
let module Printer = Print.ExprGen (struct
|
|
||||||
include Print.ExprConciseParam
|
|
||||||
|
|
||||||
let bypass : type a. Format.formatter -> (a, 't) gexpr -> bool =
|
|
||||||
fun ppf e ->
|
|
||||||
match e with
|
|
||||||
| EAbs _, _ ->
|
|
||||||
Print.op_style ppf "<function>";
|
|
||||||
true
|
|
||||||
| _ -> false
|
|
||||||
end) in
|
|
||||||
Message.emit_log "%s%a %a: @{<green>%s@}" !indent_str Print.log_entry
|
Message.emit_log "%s%a %a: @{<green>%s@}" !indent_str Print.log_entry
|
||||||
entry Print.uid_list infos
|
entry Print.uid_list infos
|
||||||
(Message.unformat (fun ppf -> Printer.expr ppf e))
|
(Message.unformat (fun ppf ->
|
||||||
|
(if Cli.globals.debug then Print.expr ~debug:true ()
|
||||||
|
else Print.UserFacing.expr lang)
|
||||||
|
ppf e))
|
||||||
| PosRecordIfTrueBool -> (
|
| PosRecordIfTrueBool -> (
|
||||||
match pos <> Pos.no_pos, Mark.remove e with
|
match pos <> Pos.no_pos, Mark.remove e with
|
||||||
| true, ELit (LBool true) ->
|
| true, ELit (LBool true) ->
|
||||||
@ -203,7 +195,7 @@ let rec evaluate_operator
|
|||||||
| Length, [(EArray es, _)] ->
|
| Length, [(EArray es, _)] ->
|
||||||
ELit (LInt (Runtime.integer_of_int (List.length es)))
|
ELit (LInt (Runtime.integer_of_int (List.length es)))
|
||||||
| Log (entry, infos), [e'] ->
|
| Log (entry, infos), [e'] ->
|
||||||
print_log entry infos pos e';
|
print_log lang entry infos pos e';
|
||||||
Mark.remove e'
|
Mark.remove e'
|
||||||
| (FromClosureEnv | ToClosureEnv), [e'] ->
|
| (FromClosureEnv | ToClosureEnv), [e'] ->
|
||||||
(* [FromClosureEnv] and [ToClosureEnv] are just there to bypass the need for
|
(* [FromClosureEnv] and [ToClosureEnv] are just there to bypass the need for
|
||||||
|
Loading…
Reference in New Issue
Block a user