From bccb3b48f6355f9feb7f8f0399a1e5701ca17a11 Mon Sep 17 00:00:00 2001 From: Jan Gruteser <jan.gruteser@hhu.de> Date: Wed, 24 Jul 2024 07:40:42 +0200 Subject: [PATCH] save error message of TLCError to provide a useful error message in ProB2-UI --- src/main/java/de/tlc4b/tlc/TLCResults.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/tlc4b/tlc/TLCResults.java b/src/main/java/de/tlc4b/tlc/TLCResults.java index b5f58e3..7ec7edc 100644 --- a/src/main/java/de/tlc4b/tlc/TLCResults.java +++ b/src/main/java/de/tlc4b/tlc/TLCResults.java @@ -5,6 +5,7 @@ import de.tlc4b.exceptions.NotSupportedException; import tla2sany.semantic.*; import tla2sany.st.Location; import tlc2.output.EC; +import tlc2.output.MP; import tlc2.output.Message; import tlc2.output.OutputCollector; import tlc2.tool.BuiltInOPs; @@ -20,7 +21,7 @@ import static tlc2.output.MP.*; public class TLCResults implements ToolGlobals { private TLCResult tlcResult; - private String violatedDefinition; + private String violatedDefinition, tlcErrorMessage; private Date startTime; private Date endTime; private LinkedHashMap<String, Long> operationsCount; @@ -191,11 +192,14 @@ public class TLCResults implements ToolGlobals { private void evalAllMessages() { - ArrayList<Message> messages = OutputCollector.getAllMessages(); + ArrayList<Message> messages = new ArrayList<>(OutputCollector.getAllMessages()); for (Message m : messages) { switch (m.getMessageClass()) { case ERROR: evalErrorMessage(m); + if (tlcResult == null) { + tlcErrorMessage = MP.getError(m.getMessageCode(), m.getParameters()); + } break; case TLCBUG: break; @@ -212,10 +216,9 @@ public class TLCResults implements ToolGlobals { } } - if (this.tlcResult == null) { - // this.tlcResult = TLCError; + if (this.tlcErrorMessage != null) { + this.tlcResult = TLCError; } - } private void evalStatusMessage(Message m) { @@ -388,6 +391,10 @@ public class TLCResults implements ToolGlobals { return tlcResult; } + public String getTLCErrorMessage() { + return tlcErrorMessage; + } + public String getResultString() { if (tlcResult == TLCResult.InvariantViolation) { return "Invariant Violation"; -- GitLab