From 7bca80092d978cd49a21485c91727a325ad0d9d9 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 22 Sep 2019 16:30:56 +0200 Subject: [PATCH] Dont evaluate right hand side of Logical Or if left hand is true. --- src/Evaluator/Evaluator.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Evaluator/Evaluator.cpp b/src/Evaluator/Evaluator.cpp index 7f6feca..baa5d5c 100644 --- a/src/Evaluator/Evaluator.cpp +++ b/src/Evaluator/Evaluator.cpp @@ -291,6 +291,10 @@ namespace Porygon::Evaluation { if (!leftValue->EvaluateBool()) return new BooleanEvalValue(false); } + else if (operation == BoundBinaryOperation::LogicalOr) { + if (leftValue->EvaluateBool()) + return new BooleanEvalValue(true); + } auto rightValue = this -> EvaluateExpression(expression->GetRight()); if (operation == BoundBinaryOperation::Equality){ return new BooleanEvalValue(leftValue->operator==(rightValue.Get()));