diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 230f822f..ae363dea 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -1064,7 +1064,7 @@ BfTypedValue BfMethodMatcher::ResolveArgTypedValue(BfResolvedArg& resolvedArg, B if (mModule->mCurMethodState != NULL) mModule->mCurMethodState->mNoBind = prevNoBind; - if (argTypedValue) + if ((argTypedValue) && (!argTypedValue.mType->IsVar())) { if (checkType != NULL) resolvedArg.mExpectedType = checkType; @@ -1440,6 +1440,9 @@ bool BfMethodMatcher::CheckMethod(BfTypeInstance* targetTypeInstance, BfTypeInst goto NoMatch; //HashSet checkedTypeSet; + if (type->IsVar()) + mHasVarArguments = true; + genericInferContext.mCheckedTypeSet.Clear(); if (!genericInferContext.InferGenericArgument(methodInstance, type, wantType, argTypedValue.mValue)) goto NoMatch; @@ -7372,7 +7375,10 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp target = mModule->GetThis(); } if (!moduleMethodInstance) + { + FinishDeferredEvals(argValues.mResolvedArgs); return BfTypedValue(); + } bool isSkipCall = moduleMethodInstance.mMethodInstance->IsSkipCall(bypassVirtual);