From 00b8bb59a7e85e5bab0f373316b5f673f94b6676 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 26 Dec 2020 05:48:51 -0800 Subject: [PATCH] Fixed some var-binding issues --- IDEHelper/Compiler/BfExprEvaluator.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 0b2b74d5..19dea090 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -10582,6 +10582,8 @@ void BfExprEvaluator::Visit(BfDelegateBindExpression* delegateBindExpr) if (bindResult.mMethodInstance == NULL) { + if ((mResult) && (mResult.mType->IsVar())) + return; mResult = BfTypedValue(); return; } @@ -14233,7 +14235,16 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo auto moduleMethodInstance = GetSelectedMethod(targetSrc, methodMatcher.mBestMethodTypeInstance, methodMatcher.mBestMethodDef, methodMatcher); if (!moduleMethodInstance) + { + if (methodMatcher.mHasVarArguments) + { + mResult = mModule->GetDefaultTypedValue(mModule->GetPrimitiveType(BfTypeCode_Var)); + return; + } + + mModule->Fail("Failed to get selected mixin", targetSrc); return; + } auto methodInstance = moduleMethodInstance.mMethodInstance; for (int checkGenericIdx = 0; checkGenericIdx < (int)methodMatcher.mBestMethodGenericArguments.size(); checkGenericIdx++)