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

Added some alloctype(T) tests

This commit is contained in:
Brian Fiete 2020-08-12 15:41:38 -07:00
parent 9d5d5b4063
commit 4b80bcbbcf
3 changed files with 74 additions and 10 deletions

View file

@ -8130,7 +8130,21 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
if (resolvedType != NULL)
{
if (resolvedType->IsGenericParam())
resolvedType = CreateModifiedTypeType(resolvedType, BfToken_AllocType);
{
auto genericParam = GetGenericParamInstance((BfGenericParamType*)resolvedType);
if (((genericParam->mTypeConstraint != NULL) && (genericParam->mTypeConstraint->IsValueType())) ||
((genericParam->mGenericParamFlags & (BfGenericParamFlag_Struct | BfGenericParamFlag_StructPtr)) != 0))
{
resolvedType = CreatePointerType(resolvedType);
}
else if (((genericParam->mTypeConstraint != NULL) && (!genericParam->mTypeConstraint->IsValueType())) ||
((genericParam->mGenericParamFlags & (BfGenericParamFlag_Class)) != 0))
{
// Leave as 'T'
}
else
resolvedType = CreateModifiedTypeType(resolvedType, BfToken_AllocType);
}
else if (resolvedType->IsValueType())
resolvedType = CreatePointerType(resolvedType);
}