Browse Source

Bugfix: Abort expression evaluation for LogicalOrExpression if first operator evaluates to true

Andreas Mülder 14 years ago
parent
commit
5c992d2222

+ 2 - 0
plugins/org.yakindu.sct.model.sexec.interpreter/src/org/yakindu/sct/model/sexec/interpreter/stext/StextStatementInterpreter.xtend

@@ -133,6 +133,8 @@ class StextStatementInterpreter extends AbstractStatementInterpreter {
 	
 	def dispatch execute(LogicalOrExpression expression){
 		var leftResult = execute(expression.leftOperand)
+		if(leftResult as Boolean)
+			return true
 		var rightResult = execute(expression.rightOperand)
 		return leftResult as Boolean || rightResult as Boolean
 	}

+ 3 - 0
plugins/org.yakindu.sct.model.sexec.interpreter/xtend-gen/org/yakindu/sct/model/sexec/interpreter/stext/StextStatementInterpreter.java

@@ -219,6 +219,9 @@ public class StextStatementInterpreter extends AbstractStatementInterpreter {
       Expression _leftOperand = expression.getLeftOperand();
       Object _execute = this.execute(_leftOperand);
       Object leftResult = _execute;
+      if (((Boolean) leftResult)) {
+        return true;
+      }
       Expression _rightOperand = expression.getRightOperand();
       Object _execute_1 = this.execute(_rightOperand);
       Object rightResult = _execute_1;