瀏覽代碼

Fixed inifnite work loop populating IsSpecializedByAutoCompleteMethod

Brian Fiete 4 年之前
父節點
當前提交
c0dd9b0e09
共有 2 個文件被更改,包括 13 次插入12 次删除
  1. 12 11
      IDEHelper/Compiler/BfContext.cpp
  2. 1 1
      IDEHelper/Compiler/BfModule.cpp

+ 12 - 11
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;
+						}
 					}
 				}
 			}

+ 1 - 1
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()));
 		}
 	}