From b12b49aec30cae0832bb9fdb9396a9689e75eee5 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 19 Nov 2024 09:04:34 -0500 Subject: [PATCH] Allow enums with <=1 element (void underlying) cast to int (0) --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 098898c6..5f9beb54 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -14611,6 +14611,13 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp auto fromTypedPrimitiveType = typedVal.mType->ToTypeInstance(); auto primTypedVal = BfTypedValue(typedVal.mValue, fromTypedPrimitiveType->mFieldInstances.back().mResolvedType, typedVal.IsAddr()); primTypedVal = LoadValue(primTypedVal); + + if ((typedVal.mType->IsEnum()) && (primTypedVal.IsValuelessType())) + { + // For enums with <= 1 member, fake an int8(0) instead of a void + primTypedVal = GetDefaultTypedValue(GetPrimitiveType(BfTypeCode_Int8)); + } + return CastToValue(srcNode, primTypedVal, toType, castFlags); }