From f8ff9b022487aba1078aae402c05113d13a04a82 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Tue, 14 Sep 2021 15:59:27 +0200 Subject: [PATCH] [printer] slightly more coherent decisions on whether being verbose or not. Some more refactoring might not be totally useless --- src/kernel_internals/runtime/boot.ml | 1 - src/kernel_services/ast_printing/cil_printer.ml | 17 +++++++++-------- src/kernel_services/ast_printing/printer.ml | 1 - tests/pdg/oracle/dyn_dpds.res.oracle | 3 +++ .../oracle/check_builtin_bts1440.res.oracle | 10 ++++++++-- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/kernel_internals/runtime/boot.ml b/src/kernel_internals/runtime/boot.ml index 76bd3467780..5a0ecd8ab3f 100644 --- a/src/kernel_internals/runtime/boot.ml +++ b/src/kernel_internals/runtime/boot.ml @@ -59,7 +59,6 @@ let () = Db.Main.play := play_analysis (* Main: let's go! *) let () = - Cil_printer.state.Printer_api.print_cil_as_is <- Kernel.debug_atleast 1; Sys.catch_break true; let f () = ignore (Project.create "default"); diff --git a/src/kernel_services/ast_printing/cil_printer.ml b/src/kernel_services/ast_printing/cil_printer.ml index 7ca79d3e27a..2afe7bfc31f 100644 --- a/src/kernel_services/ast_printing/cil_printer.ml +++ b/src/kernel_services/ast_printing/cil_printer.ml @@ -522,7 +522,15 @@ class cil_printer () = object (self) val mutable logic_printer_enabled = true - method reset () = () + val mutable verbose = false + (* Do not add a value that depends on a + non-constant variable of the kernel here (e.g. [Kernel.Debug.get ()]). Due + to the way the pretty-printing class is instantiated, this value would be + evaluated too soon. Override the [reset] method instead. *) + + method reset () = + verbose <- Kernel.debug_atleast 1; + state.print_cil_as_is <- Kernel.debug_atleast 1 || Kernel.PrintAsIs.get() method pp_keyword fmt s = pp_print_string fmt s method pp_acsl_keyword = self#pp_keyword @@ -546,12 +554,6 @@ class cil_printer () = object (self) (if block then Pretty_utils.pp_close_block else Format.fprintf) fmt "%(%)" suf - val mutable verbose = false - (* Do not add a value that depends on a - non-constant variable of the kernel here (e.g. [Kernel.Debug.get ()]). Due - to the way the pretty-printing class is instantiated, this value would be - evaluated too soon. Override the [reset] method instead. *) - (* indicates whether we are printing ghost elements *) val mutable is_ghost = false method private display_comment () = not is_ghost || verbose @@ -3406,7 +3408,6 @@ class cil_printer () = object (self) method file fmt file = fprintf fmt "@[/* Generated by Frama-C */@\n" ; - state.print_cil_as_is <- state.print_cil_as_is || Kernel.PrintAsIs.get (); print_std_includes fmt file.globals; Cil.iterGlobals file (fun g -> self#global fmt g); fprintf fmt "@]@." diff --git a/src/kernel_services/ast_printing/printer.ml b/src/kernel_services/ast_printing/printer.ml index c8e1bac0d46..aa74c0cc535 100644 --- a/src/kernel_services/ast_printing/printer.ml +++ b/src/kernel_services/ast_printing/printer.ml @@ -96,7 +96,6 @@ class printer_with_annot () = object (self) method! reset () = super#reset (); - verbose <- Kernel.debug_atleast 1; declared_globs <- Cil_datatype.Varinfo.Set.empty; print_spec <- false diff --git a/tests/pdg/oracle/dyn_dpds.res.oracle b/tests/pdg/oracle/dyn_dpds.res.oracle index 658d717167d..7a8f17e711a 100644 --- a/tests/pdg/oracle/dyn_dpds.res.oracle +++ b/tests/pdg/oracle/dyn_dpds.res.oracle @@ -40,6 +40,9 @@ int main(int a, int b, int c) x = - x; /* sid:6 */ /*@ assert *p > G; */ ; + } + else { + } /* sid:9 */ return x; diff --git a/tests/syntax/oracle/check_builtin_bts1440.res.oracle b/tests/syntax/oracle/check_builtin_bts1440.res.oracle index e3f67044af3..496a8f1ac4c 100644 --- a/tests/syntax/oracle/check_builtin_bts1440.res.oracle +++ b/tests/syntax/oracle/check_builtin_bts1440.res.oracle @@ -973,9 +973,15 @@ int max(int i, int j) { + /* Locals: tmp */ int tmp; - - if (i >= j) tmp = i; else tmp = j; + ; + if (i >= j) { + tmp = i; + } + else { + tmp = j; + } return tmp; } [kernel:file:annotation] Marking properties -- GitLab