1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Perform CheckModifyResult in ??=

This commit is contained in:
Brian Fiete 2022-07-10 15:52:03 -04:00
parent 8c24eb9278
commit ee7c057e25

View file

@ -20321,9 +20321,16 @@ void BfExprEvaluator::PerformAssignment(BfAssignmentExpression* assignExpr, bool
leftValue = mModule->LoadValue(leftValue);
if ((binaryOp == BfBinaryOp_NullCoalesce) && (PerformBinaryOperation_NullCoalesce(assignExpr->mOpToken, assignExpr->mLeft, assignExpr->mRight, leftValue, leftValue.mType, &ptr)))
if (binaryOp == BfBinaryOp_NullCoalesce)
{
return;
if (!CheckModifyResult(ptr, assignExpr->mOpToken, "assign to", false, false, true))
{
mModule->CreateValueFromExpression(assignExpr->mRight, ptr.mType, (BfEvalExprFlags)(BfEvalExprFlags_AllowSplat | BfEvalExprFlags_NoCast));
mResult = leftValue;
return;
}
if (PerformBinaryOperation_NullCoalesce(assignExpr->mOpToken, assignExpr->mLeft, assignExpr->mRight, leftValue, leftValue.mType, &ptr))
return;
}
PerformBinaryOperation(assignExpr->mLeft, assignExpr->mRight, binaryOp, assignExpr->mOpToken, flags, leftValue, rightValue);