Pārlūkot izejas kodu

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

Brian Fiete 4 gadi atpakaļ
vecāks
revīzija
1efd403472
1 mainītis faili ar 7 papildinājumiem un 6 dzēšanām
  1. 7 6
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 7 - 6
IDEHelper/Compiler/BfModuleTypeUtils.cpp

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