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
|
@ -15743,9 +15743,33 @@ bool BfExprEvaluator::CheckModifyResult(BfTypedValue typedVal, BfAstNode* refNod
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((mResultLocalVarField != 0) && (!localVar->mIsReadOnly))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue