mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +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)
|
||||
{
|
||||
if (typeInstance->IsObject())
|
||||
if (!typeInstance->IsObject())
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue