From c5805536d7f2fb3eec159e06588d3cb1ba84ed55 Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Tue, 12 Jan 2021 15:31:42 +0100
Subject: [PATCH] [aorai] don't try to show Aorai_curState value for
 non-deterministic automaton

---
 .../aorai/aorai_eva_analysis.enabled.ml       | 20 ++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/plugins/aorai/aorai_eva_analysis.enabled.ml b/src/plugins/aorai/aorai_eva_analysis.enabled.ml
index 5b481c60b1d..66770622529 100644
--- a/src/plugins/aorai/aorai_eva_analysis.enabled.ml
+++ b/src/plugins/aorai/aorai_eva_analysis.enabled.ml
@@ -39,13 +39,21 @@ let show_val fmt (expr, v, _) =
     Printer.pp_exp expr
     (Cvalue.V.pretty_typ (Some (Cil.typeOf expr))) v
 
+let show_aorai_state = "Frama_C_show_aorai_state"
+
 let builtin_show_aorai_state state args =
-  let history = Data_for_aorai.(curState :: (whole_history ())) in
-  Aorai_option.result ~current:true "@[<hv>%a@]"
-    (Pretty_utils.pp_list ~sep:" <- " (show_aorai_variable state)) history;
-  if args <> [] then begin
+  if not (Aorai_option.Deterministic.get()) then begin
+    Aorai_option.warning
+      ~current:true "%s can only display info for deterministic automata"
+      show_aorai_state
+  end else begin
+    let history = Data_for_aorai.(curState :: (whole_history ())) in
     Aorai_option.result ~current:true "@[<hv>%a@]"
-      (Pretty_utils.pp_list ~sep:"," show_val) args
+      (Pretty_utils.pp_list ~sep:" <- " (show_aorai_variable state)) history;
+    if args <> [] then begin
+      Aorai_option.result ~current:true "@[<hv>%a@]"
+        (Pretty_utils.pp_list ~sep:"," show_val) args
+    end;
   end;
   (* Return value : returns nothing, changes nothing *)
   {
@@ -55,8 +63,6 @@ let builtin_show_aorai_state state args =
     c_cacheable = Value_types.Cacheable;
   }
 
-let show_aorai_state = "Frama_C_show_aorai_state"
-
 let () =
   Cil_builtins.add_custom_builtin
     (fun () -> (show_aorai_state,Cil.voidType,[],true))
-- 
GitLab