From e887b2fb5999c8bd17e44b75059874f697316b64 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 1 Nov 2021 08:26:45 -0700 Subject: [PATCH] Fixed a var-return case with generics methods specialized with var --- IDEHelper/Compiler/BfExprEvaluator.cpp | 2 ++ IDEHelper/Compiler/BfModule.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index c320baf7..f52f20ae 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -8903,6 +8903,8 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp if (!moduleMethodInstance) { FinishDeferredEvals(argValues); + if (mModule->IsInUnspecializedGeneric()) + return mModule->GetDefaultTypedValue(mModule->GetPrimitiveType(BfTypeCode_Var)); return BfTypedValue(); } diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index a6e4197b..0dd189e3 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -14146,8 +14146,10 @@ bool BfModule::IsInSpecializedSection() bool BfModule::IsInUnspecializedGeneric() { - if (mCurMethodInstance != NULL) - return mCurMethodInstance->mIsUnspecialized; + if ((mCurMethodInstance != NULL) && (mCurMethodInstance->mIsUnspecialized)) + return true; + if ((mCurTypeInstance != NULL) && (mCurTypeInstance->IsUnspecializedType())) + return true; return false; }