mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Error fix for readonly field
This commit is contained in:
parent
74bbdbadbf
commit
1be4c24e45
1 changed files with 28 additions and 4 deletions
|
@ -15744,8 +15744,32 @@ bool BfExprEvaluator::CheckModifyResult(BfTypedValue typedVal, BfAstNode* refNod
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
error = mModule->Fail(StrFormat("Cannot %s read-only local variable '%s'.", modifyType,
|
if ((mResultLocalVarField != 0) && (!localVar->mIsReadOnly))
|
||||||
localVar->mName.c_str()), refNode);
|
{
|
||||||
|
auto typeInst = localVar->mResolvedType->ToTypeInstance();
|
||||||
|
int dataIdx = mResultLocalVarField - 1;
|
||||||
|
if (typeInst != NULL)
|
||||||
|
{
|
||||||
|
for (auto& field : typeInst->mFieldInstances)
|
||||||
|
{
|
||||||
|
if (field.mDataIdx == dataIdx)
|
||||||
|
{
|
||||||
|
error = mModule->Fail(StrFormat("Cannot %s readonly field '%s.%s'.", modifyType,
|
||||||
|
mModule->TypeToString(typeInst).c_str(),
|
||||||
|
field.GetFieldDef()->mName.c_str()), refNode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error == NULL)
|
||||||
|
{
|
||||||
|
error = mModule->Fail(StrFormat("Cannot %s read-only local variable '%s'.", modifyType,
|
||||||
|
localVar->mName.c_str()), refNode);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18908,8 +18932,8 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod
|
||||||
mResult = BfTypedValue(phi, leftValue.mType);
|
mResult = BfTypedValue(phi, leftValue.mType);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((binaryOp == BfBinaryOp_LeftShift) || (binaryOp == BfBinaryOp_RightShift))
|
if ((binaryOp == BfBinaryOp_LeftShift) || (binaryOp == BfBinaryOp_RightShift))
|
||||||
{
|
{
|
||||||
forceLeftType = true;
|
forceLeftType = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue