1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Fixed error for generic append field

This commit is contained in:
Brian Fiete 2023-02-24 08:00:33 -05:00
parent a8b3a7cbf0
commit 7a2fbdfc30

View file

@ -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);
}