From b9f84d328e6dc62627c9c3cec2180d9a04c7205e Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 27 Nov 2020 06:25:23 -0800 Subject: [PATCH] Fix for call with implicit captured 'var' type --- IDEHelper/Compiler/BfExprEvaluator.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 47831a75..d55b82dd 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -5503,8 +5503,13 @@ void BfExprEvaluator::PushArg(BfTypedValue argVal, SizedArrayImpl& ir { MakeBaseConcrete(argVal); + if (argVal.mType->IsVar()) + { + argVal = mModule->GetDefaultTypedValue(mModule->mContext->mBfObjectType); + } + if (argVal.mType->IsValuelessType()) - return; + return; bool wantSplat = false; if ((argVal.mType->IsSplattable()) && (!disableSplat)) @@ -7895,12 +7900,13 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp mModule->Fail(StrFormat("Method '%s' does not exist", methodName.c_str()), targetSrc); return BfTypedValue(); } - + + if ((prevBindResult.mPrevVal != NULL) && (methodMatcher.mMethodCheckCount > 1)) prevBindResult.mPrevVal->mCheckedMultipleMethods = true; BfModuleMethodInstance moduleMethodInstance = GetSelectedMethod(targetSrc, curTypeInst, methodDef, methodMatcher); - + if ((mModule->mCurMethodInstance != NULL) && (mModule->mCurMethodInstance->mIsUnspecialized)) { if (methodMatcher.mHasVarArguments)