From 085af8e7625a27fea668e557b2705ed083debeda Mon Sep 17 00:00:00 2001 From: Jeff Hutchinson Date: Sat, 19 Jun 2021 12:28:32 -0400 Subject: [PATCH] fix %obj.field op assign. --- Engine/source/console/astNodes.cpp | 2 +- Engine/source/console/test/ScriptTest.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Engine/source/console/astNodes.cpp b/Engine/source/console/astNodes.cpp index 1f8fea367..99a9ddad1 100644 --- a/Engine/source/console/astNodes.cpp +++ b/Engine/source/console/astNodes.cpp @@ -1432,7 +1432,7 @@ U32 SlotAssignOpNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) codeStream.emit((subType == TypeReqFloat) ? OP_LOADFIELD_FLT : OP_LOADFIELD_UINT); codeStream.emit(operand); codeStream.emit((subType == TypeReqFloat) ? OP_SAVEFIELD_FLT : OP_SAVEFIELD_UINT); - if (subType == TypeReqNone) + if (type == TypeReqNone) codeStream.emit(OP_POP_STK); return codeStream.tell(); } diff --git a/Engine/source/console/test/ScriptTest.cpp b/Engine/source/console/test/ScriptTest.cpp index ccde5439f..58441c3d2 100644 --- a/Engine/source/console/test/ScriptTest.cpp +++ b/Engine/source/console/test/ScriptTest.cpp @@ -512,6 +512,22 @@ TEST(Script, Basic_SimObject) )"); ASSERT_STREQ(fieldTest.getString(), "B"); + + ConsoleValue fieldOpTest = RunScript(R"( + function a() + { + %obj = new SimObject(); + %obj.field = 1; + %obj.field += 2; + + %value = %obj.field; + %obj.delete(); + return %value; + } + return a(); + )"); + + ASSERT_EQ(fieldOpTest.getInt(), 3); } TEST(Script, Internal_Name)