mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed error for generic append field
This commit is contained in:
parent
a8b3a7cbf0
commit
7a2fbdfc30
1 changed files with 14 additions and 2 deletions
|
@ -5461,9 +5461,21 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
|
||||||
}
|
}
|
||||||
else if (fieldDef->mIsAppend)
|
else if (fieldDef->mIsAppend)
|
||||||
{
|
{
|
||||||
if (typeInstance->IsObject())
|
if (!typeInstance->IsObject())
|
||||||
Fail("Append fields can only be declared in classes", nameRefNode, true);
|
Fail("Append fields can only be declared in classes", nameRefNode, true);
|
||||||
else if ((!resolvedFieldType->IsObject()) && (!resolvedFieldType->IsGenericParam()))
|
else if (resolvedFieldType->IsGenericParam())
|
||||||
|
{
|
||||||
|
auto genericParamInstance = GetGenericParamInstance((BfGenericParamType*)resolvedFieldType);
|
||||||
|
if (genericParamInstance != NULL)
|
||||||
|
{
|
||||||
|
if (((genericParamInstance->mGenericParamFlags & BfGenericParamFlag_Class) == 0) &&
|
||||||
|
((genericParamInstance->mTypeConstraint == NULL) || (!genericParamInstance->mTypeConstraint->IsObject())))
|
||||||
|
{
|
||||||
|
Fail(StrFormat("Append fields must be classes. Consider adding a 'where %s : class' constraint.", genericParamInstance->GetName().c_str()), nameRefNode, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!resolvedFieldType->IsObject())
|
||||||
Fail("Append fields must be classes", nameRefNode, true);
|
Fail("Append fields must be classes", nameRefNode, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue