diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 2775fc21..2310cc04 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -13266,8 +13266,14 @@ BfVariant BfModule::TypedValueToVariant(BfAstNode* refNode, const BfTypedValue& } } } - else + else if (value.mType->IsConstExprValue()) { + auto constExprType = (BfConstExprValueType*)value.mType; + return constExprType->mValue; + } + else if (value.mType->IsValueType()) + { + PopulateType(value.mType); int allocSize = value.mType->mSize + 4; BfVariant::StructData* structData = (BfVariant::StructData*)(new uint8[allocSize]); memset(structData, 0, allocSize); diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index a0ac96dc..0672842a 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -7742,6 +7742,9 @@ BfPointerType* BfModule::CreatePointerType(BfType* resolvedType) BfConstExprValueType* BfModule::CreateConstExprValueType(const BfTypedValue& typedValue, bool allowCreate) { + if (typedValue.mType->IsConstExprValue()) + return (BfConstExprValueType*)typedValue.mType; + BfPopulateType populateType = allowCreate ? BfPopulateType_Data : BfPopulateType_Identity; BfResolveTypeRefFlags resolveFlags = allowCreate ? BfResolveTypeRefFlag_None : BfResolveTypeRefFlag_NoCreate;