diff --git a/src/main/java/avatartranslator/AvatarGuardElse.java b/src/main/java/avatartranslator/AvatarGuardElse.java index 3afe3e0fe5ce808bfbf80d17dc65d86f0f2e8d99..63ea73ad602182147a182a5a65647a87e7d21beb 100644 --- a/src/main/java/avatartranslator/AvatarGuardElse.java +++ b/src/main/java/avatartranslator/AvatarGuardElse.java @@ -51,31 +51,32 @@ public class AvatarGuardElse extends AvatarGuard { public AvatarGuardElse () { } - public AvatarGuard getRealGuard (AvatarStateMachineElement precedent) { + public AvatarGuard getRealGuard(AvatarStateMachineElement precedent) { AvatarGuard result = null; - for (AvatarStateMachineElement asme: precedent.getNexts ()) { + for (AvatarStateMachineElement asme: precedent.getNexts()) { if (! (asme instanceof AvatarTransition)) continue; - AvatarGuard guard = ((AvatarTransition) asme).getGuard (); + AvatarGuard guard = ((AvatarTransition) asme).getGuard(); if (guard == this) continue; - if (guard == null || !guard.isGuarded ()) + if (guard == null || !guard.isGuarded()) // another guard is empty: else will never trigger // FIXME: add warning - return new AvatarConstantGuard (AvatarConstant.FALSE); + return new AvatarConstantGuard(AvatarConstant.FALSE); - if (guard.isElseGuard ()) + if (guard.isElseGuard()) // there were two else guards... Shouldn't happen // FIXME: add warning - continue; + // continue; + return null; if (result == null) - result = ((AvatarComposedGuard) guard).getOpposite (); + result = ((AvatarComposedGuard) guard).getOpposite(); else - result = AvatarGuard.addGuard (result, ((AvatarComposedGuard) guard).getOpposite (), "and"); + result = AvatarGuard.addGuard(result, ((AvatarComposedGuard) guard).getOpposite(), "and"); } return result; diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java index 74272690f6efbc4f3048a36b92035d0986bfcd67..22a070ba0833bd3428de2fedc664a0804bd0164a 100644 --- a/src/main/java/avatartranslator/AvatarSpecification.java +++ b/src/main/java/avatartranslator/AvatarSpecification.java @@ -1573,8 +1573,8 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec { return; for (AvatarStateMachineElement asme : asm.getListOfElements()) { - if (!(asme instanceof AvatarState)) - continue; + // if (!(asme instanceof AvatarState)) + // continue; //TraceManager.addDev("Working with state " + asme.getNiceName()); for (AvatarStateMachineElement next : asme.getNexts()) { diff --git a/src/main/java/avatartranslator/AvatarStateMachine.java b/src/main/java/avatartranslator/AvatarStateMachine.java index c72f78a7183ea47a236172d49a896ccf1d9117a4..518777832d63fbf7b3833ee45866feabdbe993d0 100644 --- a/src/main/java/avatartranslator/AvatarStateMachine.java +++ b/src/main/java/avatartranslator/AvatarStateMachine.java @@ -2202,9 +2202,11 @@ public class AvatarStateMachine extends AvatarElement { AvatarTransition at = (AvatarTransition) asme; // Guard - val = at.getGuard().toString(); - if (MyMath.hasIntegerValueOverMax(val, maxV)) { - invalids.add(this); + if (at.getGuard() != null) { + val = at.getGuard().toString(); + if (MyMath.hasIntegerValueOverMax(val, maxV)) { + invalids.add(this); + } } // Delays diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index dd3ca1f65fb8bbb5ae21cb8c9a86f1035d92cd8b..34ef2e917495a881d12c5f508a81ce92fdb72fe1 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -132,6 +132,24 @@ public class AvatarDesignPanelTranslator { addWarning(ce); } + for (AvatarBlock block : as.getListOfBlocks()) { + for (AvatarStateMachineElement asme : block.getStateMachine().getListOfElements()) { + if (asme instanceof AvatarTransition) { + AvatarTransition at = (AvatarTransition) asme; + if (at.getGuard() == null) { + UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Error while using Else in Guard"); + ce.setTDiagramPanel(adp.getAvatarBDPanel()); + Object o = at.getReferenceObject(); + if (o instanceof TGComponent) { + ce.setTGComponent((TGComponent) o); + ce.setTDiagramPanel(((TGComponent) o).getTDiagramPanel()); + } + addCheckingError(ce); + } + } + } + } + if (checkingErrors.size() == 0) { ArrayList<AvatarError> list = AvatarSyntaxChecker.checkSyntaxErrors(as); for (AvatarError ar : list) {