From 19513d33106641bf5be2e694ea62d411c79030df Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 5 Jul 2021 21:15:58 -0700 Subject: [PATCH] Fixes for methodRef dependencies and dependencies from generics --- IDEHelper/Compiler/BfModule.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index f75e00f7..294073e5 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -3469,9 +3469,12 @@ void BfModule::AddDependency(BfType* usedType, BfType* userType, BfDependencyMap if ((flags & (BfDependencyMap::DependencyFlag_MethodGenericArg | BfDependencyMap::DependencyFlag_TypeGenericArg)) != 0) depFlag = BfDependencyMap::DependencyFlag_GenericArgRef; // Will cause a rebuild but not an outright deletion of the type - auto underlyingType = usedType->GetUnderlyingType(); - if (underlyingType != NULL) - AddDependency(underlyingType, userType, depFlag); + if (!usedType->IsGenericTypeInstance()) + { + auto underlyingType = usedType->GetUnderlyingType(); + if (underlyingType != NULL) + AddDependency(underlyingType, userType, depFlag); + } BfDependedType* checkDType = usedType->ToDependedType(); if (checkDType == NULL) @@ -3491,7 +3494,7 @@ void BfModule::AddDependency(BfType* usedType, BfType* userType, BfDependencyMap if (!checkDType->mDependencyMap.AddUsedBy(userType, flags)) return; - if (checkDType->IsGenericTypeInstance()) + if ((checkDType->IsGenericTypeInstance()) && (!userType->IsMethodRef())) { auto genericTypeInstance = (BfTypeInstance*) checkDType; for (auto genericArg : genericTypeInstance->mGenericTypeInfo->mTypeGenericArguments)