evaluation does not stop where it should
Summary
According section 7.1.4 of the TTCN-3 standard, "Short circuit evaluation for boolean expressions is used, i.e. the evaluation of operands of logical operators is stopped once the overall result is known: in the case of the and operator, if the left argument evaluates to false, then the right argument is not evaluated and the whole expression evaluates to false. In the case of the or operator, if the left argument evaluates to true, then the right argument is not evaluated and the whole expression evaluates to true."
Steps and/or TTCN-3 code to reproduce
testcase logicalops() runs on ct_empty{
var integer v:=0;
var integer u:=0;
if(true or (u/v==1)){setverdict(pass);}else{setverdict(fail);}
if(not(false or (u/v==1))){setverdict(pass);}else{setverdict(fail);}
}
What is the current bug behavior?
Pass
What is the expected correct behavior?
Error, as there is a division by 0 in the 2nd operand -- but this operand shall not be reached during evaluation
Relevant logs and/or screenshots
Possible fixes
Titan version
8.1.0
Platform details (OS type and version)
Microsoft Windows 10 Enterprise 10.0.19042
/cc @aknappqwt @mmagyari