From 319e0e495c6dc7e031430fb5e126928e1dc90271 Mon Sep 17 00:00:00 2001 From: Zelentsov Dmitry Date: Wed, 21 May 2025 18:42:37 +0300 Subject: [PATCH] Fix processing of literals in binary expressions Signed-off-by: Zelentsov Dmitry --- .../compiler/lowering/ets/constantExpressionLowering.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp index a1178041a..15f4b31ce 100644 --- a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp +++ b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp @@ -649,7 +649,7 @@ static ir::AstNode *HandleMultiplicativeExpression(const ir::BinaryExpression *e { auto left = expr->Left()->AsLiteral(); auto right = expr->Right()->AsLiteral(); - if (!IsConvertibleToNumericType(left) && !IsConvertibleToNumericType(right)) { + if (!IsConvertibleToNumericType(left) || !IsConvertibleToNumericType(right)) { LogError(context, diagnostic::WRONG_OPERAND_TYPE_FOR_BINARY_EXPRESSION, {}, expr->Start()); return CreateErrorIdentifier(expr, context->allocator); } @@ -755,7 +755,7 @@ static ir::AstNode *HandleAdditiveExpression(const ir::BinaryExpression *expr, p return PerformStringAdditiveOperation(expr, context); } - if (!IsConvertibleToNumericType(left) && !IsConvertibleToNumericType(right)) { + if (!IsConvertibleToNumericType(left) || !IsConvertibleToNumericType(right)) { LogError(context, diagnostic::WRONG_OPERAND_TYPE_FOR_BINARY_EXPRESSION, {}, expr->Start()); return CreateErrorIdentifier(expr, context->allocator); } @@ -834,7 +834,7 @@ static ir::AstNode *HandleShiftExpression(const ir::BinaryExpression *expr, publ auto right = expr->Right()->AsLiteral(); auto opType = expr->OperatorType(); - if (!IsConvertibleToNumericType(left) && !IsConvertibleToNumericType(right)) { + if (!IsConvertibleToNumericType(left) || !IsConvertibleToNumericType(right)) { LogError(context, diagnostic::WRONG_OPERAND_TYPE_FOR_BINARY_EXPRESSION, {}, expr->Start()); return CreateErrorIdentifier(expr, context->allocator); } -- Gitee