Don't generate op_inc whenever its used as an expression.

This commit is contained in:
Jeff Hutchinson 2021-09-07 19:43:39 -04:00
parent 9b2f4976c9
commit 55c0a748b4
2 changed files with 15 additions and 1 deletions

View file

@ -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);

View file

@ -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