1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Fixed invalid enum const type finalization with non-enum-case const

This commit is contained in:
Brian Fiete 2020-11-30 06:23:52 -08:00
parent 2c00929751
commit 1efd403472

View file

@ -3800,14 +3800,15 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
for (auto& fieldInstanceRef : typeInstance->mFieldInstances) for (auto& fieldInstanceRef : typeInstance->mFieldInstances)
{ {
auto fieldInstance = &fieldInstanceRef; auto fieldInstance = &fieldInstanceRef;
if (fieldInstance->mConstIdx != -1) if (fieldInstance->mConstIdx == -1)
{ continue;
if (!fieldInstance->GetFieldDef()->IsEnumCaseEntry())
continue;
auto constant = typeInstance->mConstHolder->GetConstantById(fieldInstance->mConstIdx); auto constant = typeInstance->mConstHolder->GetConstantById(fieldInstance->mConstIdx);
BfIRValue newConstant = typeInstance->mConstHolder->CreateConst(typeCode, constant->mUInt64); BfIRValue newConstant = typeInstance->mConstHolder->CreateConst(typeCode, constant->mUInt64);
fieldInstance->mConstIdx = newConstant.mId; fieldInstance->mConstIdx = newConstant.mId;
} }
} }
}
underlyingType = GetPrimitiveType(typeCode); underlyingType = GetPrimitiveType(typeCode);
auto fieldInstance = &typeInstance->mFieldInstances.back(); auto fieldInstance = &typeInstance->mFieldInstances.back();