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

EnumType.UnderlyingType support, generic enum constraint improvements

This commit is contained in:
Brian Fiete 2022-01-03 07:30:03 -05:00
parent 64161bf001
commit 1ee0a19bbf
5 changed files with 74 additions and 2 deletions

View file

@ -7284,6 +7284,13 @@ BfType* BfModule::ResolveInnerType(BfType* outerType, BfAstNode* typeRef, BfPopu
}
if (nestedTypeDef != NULL)
break;
if ((outerTypeInstance->IsEnum()) && (findName == "UnderlyingType"))
{
auto underlyingType = outerTypeInstance->GetUnderlyingType();
if (underlyingType != NULL)
return underlyingType;
}
}
}
}
@ -9949,6 +9956,12 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
auto genericParam = GetGenericParamInstance((BfGenericParamType*)leftType);
if ((genericParam->mGenericParamFlags & BfGenericParamFlag_Var) != 0)
return ResolveTypeResult(typeRef, GetPrimitiveType(BfTypeCode_Var), populateType, resolveFlags);
if ((genericParam->IsEnum()) && (qualifiedTypeRef->mRight != NULL))
{
StringView findNameRight = qualifiedTypeRef->mRight->ToStringView();
if (findNameRight == "UnderlyingType")
return ResolveTypeResult(typeRef, GetPrimitiveType(BfTypeCode_Var), populateType, resolveFlags);
}
}
auto resolvedType = ResolveInnerType(leftType, qualifiedTypeRef->mRight, populateType, false, numGenericArgs);