From abd883212fd32a163b117be24a2708026826ca6a Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 5 Jan 2021 05:53:44 -0800 Subject: [PATCH] Fixed generic arg reification issue --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index fcfe85c3..ed4be5a9 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -580,7 +580,18 @@ void BfModule::InitType(BfType* resolvedTypeRef, BfPopulateType populateType) // (genericTypeInst->mGenericParams.size() == genericTypeInst->mTypeGenericArguments.size())); for (auto typeGenericArg : genericTypeInst->mGenericTypeInfo->mTypeGenericArguments) - BF_ASSERT((typeGenericArg->mRebuildFlags & BfTypeRebuildFlag_Deleted) == 0); + { + BF_ASSERT((typeGenericArg->mRebuildFlags & BfTypeRebuildFlag_Deleted) == 0); + if (mIsReified) + { + // Try to reify any generic args + for (auto genericArg : typeInst->mGenericTypeInfo->mTypeGenericArguments) + { + if (!genericArg->IsReified()) + PopulateType(genericArg, BfPopulateType_Declaration); + } + } + } } if (!mContext->mSavedTypeDataMap.IsEmpty()) @@ -984,6 +995,15 @@ void BfModule::PopulateType(BfType* resolvedTypeRef, BfPopulateType populateType // } // else // mContext->RebuildType(typeInst, false, false); + + if (typeInst->mGenericTypeInfo != NULL) + { + for (auto genericArg : typeInst->mGenericTypeInfo->mTypeGenericArguments) + { + if (!genericArg->IsReified()) + PopulateType(genericArg, BfPopulateType_Declaration); + } + } } } else