diff --git a/Engine/source/console/astNodes.cpp b/Engine/source/console/astNodes.cpp index 1ee165272..091f6cf1c 100644 --- a/Engine/source/console/astNodes.cpp +++ b/Engine/source/console/astNodes.cpp @@ -1083,7 +1083,7 @@ U32 AssignOpExprNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) bool oldVariables = arrayIndex || varName[0] == '$'; - if (op == opPLUSPLUS && !oldVariables) + if (op == opPLUSPLUS && !oldVariables && type == TypeReqNone) { const S32 varIdx = getFuncVars(dbgLineNumber)->assign(varName, TypeReqFloat, dbgLineNumber); diff --git a/Engine/source/console/test/ScriptTest.cpp b/Engine/source/console/test/ScriptTest.cpp index a2295f774..24905aba3 100644 --- a/Engine/source/console/test/ScriptTest.cpp +++ b/Engine/source/console/test/ScriptTest.cpp @@ -968,6 +968,20 @@ TEST(Script, MiscRegressions) )"); ASSERT_EQ(regression4.getFloat(), 0.5); + + Con::setBoolVariable("$Debug::DumpByteCode", true); + + ConsoleValue regression5 = RunScript(R"( + function noOpInc() + { + %count = 0; + %var[%count++] = 2; + return %var[1]; + } + return noOpInc(); + )"); + + ASSERT_EQ(regression5.getInt(), 2); } #endif