From 384547965a9ff4c77f76a3fd6d1b2895c70f79ad Mon Sep 17 00:00:00 2001 From: Shimenkov Mikhail Date: Wed, 30 Apr 2025 18:29:22 +0300 Subject: [PATCH] Fix opAssignment lowering Signed-off-by: Shimenkov Mikhail Change-Id: Id843da63c6900a0e870012e8324c96f86ca9204b --- ets2panda/compiler/lowering/ets/opAssignment.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ets2panda/compiler/lowering/ets/opAssignment.cpp b/ets2panda/compiler/lowering/ets/opAssignment.cpp index 32c940a4b..6e01cd32c 100644 --- a/ets2panda/compiler/lowering/ets/opAssignment.cpp +++ b/ets2panda/compiler/lowering/ets/opAssignment.cpp @@ -207,8 +207,11 @@ static ir::Expression *ConstructOpAssignmentResult(public_lib::Context *ctx, ir: // Create temporary variable(s) if left hand of assignment is not defined by simple identifier[s] if (left->IsIdentifier()) { - const std::string formatString = "@@I1 = (@@I2 " + std::string(lexer::TokenToString(CombinedOpToOp(opEqual))) + - " (@@E3)).to" + left->TsType()->ToString() + "()"; + std::string formatString = "@@I1 = (@@I2 " + std::string(lexer::TokenToString(CombinedOpToOp(opEqual))) + + " (@@E3))"; + if (!left->TsType()->IsETSStringType()) { + formatString += ".to" + left->TsType()->ToString() + "()"; + } retVal = parser->CreateFormattedExpression(formatString, GetClone(allocator, left->AsIdentifier()), GetClone(allocator, left->AsIdentifier()), right, exprType); } else if (left->IsMemberExpression()) { -- Gitee