From 0b23446aa8670e8b7433ddd60cccd2f7fc0e3902 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 22 Jan 2021 14:19:02 -0800 Subject: [PATCH] Added stricter method extension 'this' pre-check --- IDEHelper/Compiler/BfExprEvaluator.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index e67e852e..a8d2a101 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -2219,6 +2219,16 @@ NoMatch: if (mBestMethodDef != NULL) return false; + if (checkMethod->mMethodType == BfMethodType_Extension) + { + auto thisParam = methodInstance->GetParamType(0); + auto resolveThisParam = mModule->ResolveGenericType(thisParam, NULL, &mCheckMethodGenericArguments); + if (resolveThisParam == NULL) + return false; + if (!mModule->CanCast(mTarget, resolveThisParam)) + return false; + } + if (mBackupMethodDef != NULL) { int prevParamDiff = (int)mBackupMethodDef->GetExplicitParamCount() - (int)mArguments.size();