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

Fixed const handling

This commit is contained in:
Brian Fiete 2020-09-29 04:56:47 -07:00
parent 395cac905d
commit 67556c2ff6

View file

@ -3615,8 +3615,7 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
} }
} }
// Check enum cases for duplicates // Const handling
if (mCurTypeInstance->IsEnum())
{ {
Dictionary<int64, BfFieldDef*> valueMap; Dictionary<int64, BfFieldDef*> valueMap;
for (auto& fieldInstanceRef : typeInstance->mFieldInstances) for (auto& fieldInstanceRef : typeInstance->mFieldInstances)
@ -3632,6 +3631,9 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
SetAndRestoreValue<BfFieldDef*> prevTypeRef(mContext->mCurTypeState->mCurFieldDef, fieldDef); SetAndRestoreValue<BfFieldDef*> prevTypeRef(mContext->mCurTypeState->mCurFieldDef, fieldDef);
typeInstance->mModule->ResolveConstField(typeInstance, fieldInstance, fieldDef); typeInstance->mModule->ResolveConstField(typeInstance, fieldInstance, fieldDef);
// Check enum cases for duplicates
if (mCurTypeInstance->IsEnum())
{
auto underlyingType = fieldInstance->mResolvedType->GetUnderlyingType(); auto underlyingType = fieldInstance->mResolvedType->GetUnderlyingType();
if ((fieldDef->IsEnumCaseEntry()) && (fieldInstance->mConstIdx != -1) && (underlyingType->IsIntegral())) if ((fieldDef->IsEnumCaseEntry()) && (fieldInstance->mConstIdx != -1) && (underlyingType->IsIntegral()))
{ {
@ -3651,6 +3653,7 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
} }
} }
} }
}
if ((typeInstance->IsEnum()) && (!typeInstance->IsPayloadEnum())) if ((typeInstance->IsEnum()) && (!typeInstance->IsPayloadEnum()))
{ {