mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Better error attribution for payload enum circular data references
This commit is contained in:
parent
3a668695ef
commit
fc9650af41
1 changed files with 21 additions and 2 deletions
|
@ -1132,11 +1132,30 @@ bool BfModule::CheckCircularDataError(bool failTypes)
|
||||||
}
|
}
|
||||||
else if (checkTypeState->mCurFieldDef != NULL)
|
else if (checkTypeState->mCurFieldDef != NULL)
|
||||||
{
|
{
|
||||||
Fail(StrFormat("Field '%s.%s' causes a data cycle", TypeToString(checkTypeState->mType).c_str(), checkTypeState->mCurFieldDef->mName.c_str()));
|
BfAstNode* refNode = checkTypeState->mCurFieldDef->GetRefNode();
|
||||||
|
|
||||||
|
if (refNode == NULL)
|
||||||
|
{
|
||||||
|
if (checkTypeState->mCurTypeDef != NULL)
|
||||||
|
refNode = checkTypeState->mCurTypeDef->GetRefNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto checkSrcTypeState = checkTypeState;
|
||||||
|
while ((refNode == NULL) && (checkSrcTypeState != NULL))
|
||||||
|
{
|
||||||
|
if (checkSrcTypeState->mCurFieldDef != NULL)
|
||||||
|
refNode = checkSrcTypeState->mCurFieldDef->GetRefNode();
|
||||||
|
checkSrcTypeState = checkSrcTypeState->mPrevState;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fail(StrFormat("Field '%s.%s' causes a data cycle", TypeToString(checkTypeState->mType).c_str(), checkTypeState->mCurFieldDef->mName.c_str()), refNode, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Fail(StrFormat("Type '%s' causes a data cycle", TypeToString(checkTypeState->mType).c_str()));
|
BfAstNode* refNode = NULL;
|
||||||
|
if (checkTypeState->mCurTypeDef != NULL)
|
||||||
|
refNode = checkTypeState->mCurTypeDef->GetRefNode();
|
||||||
|
Fail(StrFormat("Type '%s' causes a data cycle", TypeToString(checkTypeState->mType).c_str()), refNode, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto typeInstance = checkTypeState->mType->ToTypeInstance();
|
auto typeInstance = checkTypeState->mType->ToTypeInstance();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue