From c0dd9b0e0949e2ccb587bc3d14cd060ad3871edc Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 22 Jan 2021 07:50:17 -0800 Subject: [PATCH] Fixed inifnite work loop populating IsSpecializedByAutoCompleteMethod --- IDEHelper/Compiler/BfContext.cpp | 23 ++++++++++++----------- IDEHelper/Compiler/BfModule.cpp | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/IDEHelper/Compiler/BfContext.cpp b/IDEHelper/Compiler/BfContext.cpp index ab8a8fa6..f45af98f 100644 --- a/IDEHelper/Compiler/BfContext.cpp +++ b/IDEHelper/Compiler/BfContext.cpp @@ -695,17 +695,18 @@ bool BfContext::ProcessWorkList(bool onlyReifiedTypes, bool onlyReifiedMethods) // but it has been referenced now so we need to complete it, OR // if this is from a newly-reified module -// if (false) -// { -// // For debugging -// mScratchModule->PopulateType(type, BfPopulateType_Full); -// } - - BfTypeProcessRequest* typeProcessRequest = mPopulateTypeWorkList.Alloc(); - typeProcessRequest->mType = type; - mCompiler->mStats.mTypesQueued++; - mCompiler->UpdateCompletion(); - didWork = true; + if ((type->IsSpecializedByAutoCompleteMethod()) && (type->mDefineState >= BfTypeDefineState_Defined)) + { + // We don't process methods for these + } + else + { + BfTypeProcessRequest* typeProcessRequest = mPopulateTypeWorkList.Alloc(); + typeProcessRequest->mType = type; + mCompiler->mStats.mTypesQueued++; + mCompiler->UpdateCompletion(); + didWork = true; + } } } } diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 469f24ee..507da9de 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -23683,7 +23683,7 @@ bool BfModule::Finish() { for (auto type : mOwnedTypeInstances) { - BF_ASSERT(!type->IsIncomplete()); + BF_ASSERT((!type->IsIncomplete()) || (type->IsSpecializedByAutoCompleteMethod())); } }