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);