From 179c27eb29878662ef44fe7c2690d52f131d3b0d Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Thu, 27 Aug 2015 14:48:01 +0000
Subject: [PATCH] Update on how guards are handled by the proverif code
 generator

---
 src/avatartranslator/toproverif/AVATAR2ProVerif.java | 10 ++++++++--
 src/ui/AvatarDesignPanel.java                        |  6 +++---
 src/ui/CheckingError.java                            |  4 ++--
 src/ui/GTURTLEModeling.java                          |  1 +
 src/ui/window/JDialogProVerifGeneration.java         |  4 ++++
 5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/avatartranslator/toproverif/AVATAR2ProVerif.java b/src/avatartranslator/toproverif/AVATAR2ProVerif.java
index 6d31a4a0d5..ed2bc3d312 100755
--- a/src/avatartranslator/toproverif/AVATAR2ProVerif.java
+++ b/src/avatartranslator/toproverif/AVATAR2ProVerif.java
@@ -51,6 +51,7 @@ import java.util.*;
 import proverifspec.*;
 import myutil.*;
 import avatartranslator.*;
+import ui.*;
 
 public class AVATAR2ProVerif {
 
@@ -961,14 +962,14 @@ public class AVATAR2ProVerif {
     }
 
     public void makeBlockProcesses(AvatarBlock _block, AvatarStateMachine _asm, AvatarStateMachineElement _asme, ProVerifProcess _p, LinkedList<ProVerifProcess> _processes, LinkedList<AvatarState> _states, String _choiceInfo) {
-        AvatarSignal as;
+        avatartranslator.AvatarSignal as;
         AvatarActionOnSignal aaos;
         AvatarTransition at;
         ProVerifProcess p, ptmp, ptmp1, ptmp2;
         String tmp, name, value, term;
         int i, j;
         int index0, index1;
-        AvatarMethod am;
+        avatartranslator.AvatarMethod am;
         boolean found;
         LinkedList<String> pos;
 
@@ -1143,6 +1144,11 @@ public class AVATAR2ProVerif {
                     TraceManager.addDev("   Adding guard: " + tmp);
                     addLineNoEnd(_p, "if " + tmp + " then");
                 } else {
+		    CheckingError ce = new CheckingError(CheckingError.BEHAVIOR_ERROR, "Guard: " + at.getGuard() + " in block " + _block.getName() + " is not supported. Replacing by an empty guard");
+                    ce.setAvatarBlock(_block);
+                    ce.setTDiagramPanel(((AvatarDesignPanel)(avspec.getReferenceObject())).getAvatarSMDPanel(_block.getName()));
+                    ce.setTGComponent((TGComponent)(at.getReferenceObject()));
+                    warnings.add(ce);
 		    addLineNoEnd(_p, "(*  Unsuported guard:" + at.getGuard() + " *)");
 		}
             }
diff --git a/src/ui/AvatarDesignPanel.java b/src/ui/AvatarDesignPanel.java
index 20630c76fa..f4c39f7c32 100644
--- a/src/ui/AvatarDesignPanel.java
+++ b/src/ui/AvatarDesignPanel.java
@@ -324,12 +324,12 @@ public class AvatarDesignPanel extends TURTLEPanel {
     }
 
     public void modelBacktracingProVerif(ProVerifOutputAnalyzer pvoa) {
-	
+
         if (abdp == null) {
             return;
         }
 
-	resetModelBacktracingProVerif();
+        resetModelBacktracingProVerif();
 
         String block, attr, state;
         int index;
@@ -339,7 +339,7 @@ public class AvatarDesignPanel extends TURTLEPanel {
         TGComponent tgc;
 
         // Confidential attributes
-         for(String s: pvoa.getSecretTerms()) {
+        for(String s: pvoa.getSecretTerms()) {
             index = s.indexOf("__");
             if (index != -1) {
                 block = s.substring(0, index);
diff --git a/src/ui/CheckingError.java b/src/ui/CheckingError.java
index 937a5c5132..cb00ca9b92 100755
--- a/src/ui/CheckingError.java
+++ b/src/ui/CheckingError.java
@@ -65,7 +65,7 @@ public class CheckingError {
     private TMLTask tmlt;
     private TDiagramPanel tdp; 
     private TGComponent tgc;
-	private AvatarBlock ab;
+    private AvatarBlock ab;
     
     public CheckingError(int _type, String _message) {
         type = _type;
@@ -84,7 +84,7 @@ public class CheckingError {
         t = _t;
     }
 	
-	public void setAvatarBlock(AvatarBlock _ab) {
+    public void setAvatarBlock(AvatarBlock _ab) {
         ab = _ab;
     }
     
diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java
index c54eff9384..e7c952f163 100755
--- a/src/ui/GTURTLEModeling.java
+++ b/src/ui/GTURTLEModeling.java
@@ -629,6 +629,7 @@ public class GTURTLEModeling {
         //tml2uppaal.setChoiceDeterministic(choices);
         //tml2uppaal.setSizeInfiniteFIFO(_size);
         proverif = avatar2proverif.generateProVerif(true, true, _stateReachability, _advancedTranslation);
+	warnings = avatar2proverif.getWarnings();
         languageID = PROVERIF;
         mgui.setMode(MainGUI.EDIT_PROVERIF_OK);
         //mgui.setMode(MainGUI.MODEL_PROVERIF_OK);
diff --git a/src/ui/window/JDialogProVerifGeneration.java b/src/ui/window/JDialogProVerifGeneration.java
index acc74dcc61..7af509132b 100644
--- a/src/ui/window/JDialogProVerifGeneration.java
+++ b/src/ui/window/JDialogProVerifGeneration.java
@@ -331,6 +331,10 @@ public class JDialogProVerifGeneration extends javax.swing.JDialog implements Ac
                 } else {
                     jta.append("Could not generate proverif code\n");
                 }
+
+		//if (mgui.gtm.getCheckingWarnings().size() > 0) {
+		    jta.append("" +  mgui.gtm.getCheckingWarnings().size() + " warning(s)\n");
+		    //}
             }
 
 
-- 
GitLab