From f85a4317fc13b6a8104162305b52d1c35e46eb66 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 14 Dec 2021 11:26:24 -0500 Subject: [PATCH] Fixed invalid underlying enum type error --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 81db527c..d538f162 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -2927,6 +2927,9 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy { bool hadType = false; + BfAstNode* deferredErrorNode = NULL; + char* deferredError = NULL; + for (auto baseTypeRef : typeDef->mBaseTypes) { SetAndRestoreValue prevTypeRef(mContext->mCurTypeState->mCurBaseTypeRef, baseTypeRef); @@ -2946,12 +2949,14 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy } else { - Fail("Underlying enum type already specified", baseTypeRef); + deferredError = "Underlying enum type already specified"; + deferredErrorNode = baseTypeRef; } } else { - Fail("Invalid underlying enum type", baseTypeRef); + deferredError = "Invalid underlying enum type"; + deferredErrorNode = baseTypeRef; } } else @@ -2961,6 +2966,9 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy } } + if (deferredError != NULL) + Fail(deferredError, deferredErrorNode, true); + if (underlyingType == NULL) { underlyingType = GetPrimitiveType(BfTypeCode_Int64);