diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 636040d7..d39dd5c8 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -1673,11 +1673,19 @@ bool BfMethodMatcher::CheckMethod(BfTypeInstance* targetTypeInstance, BfTypeInst if ((methodInstance->mVirtualTableIdx < targetTypeInstance->mVirtualMethodTable.mSize) && (methodInstance->mVirtualTableIdx >= 0)) { BfVirtualMethodEntry& vEntry = targetTypeInstance->mVirtualMethodTable[methodInstance->mVirtualTableIdx]; - auto implMethod = (BfMethodInstance*)vEntry.mImplementingMethod; - if ((implMethod != methodInstance) && (implMethod != NULL)) + if ((vEntry.mImplementingMethod.mTypeInstance != NULL) && (vEntry.mImplementingMethod.mTypeInstance->mDefineState < BfTypeDefineState_DefinedAndMethodsSlotted) && + (mModule->mCompiler->IsAutocomplete())) { - SetAndRestoreValue prevBypassVirtual(mBypassVirtual, true); - return CheckMethod(targetTypeInstance, implMethod->GetOwner(), implMethod->mMethodDef, isFailurePass); + // Silently ignore + } + else + { + auto implMethod = (BfMethodInstance*)vEntry.mImplementingMethod; + if ((implMethod != methodInstance) && (implMethod != NULL)) + { + SetAndRestoreValue prevBypassVirtual(mBypassVirtual, true); + return CheckMethod(targetTypeInstance, implMethod->GetOwner(), implMethod->mMethodDef, isFailurePass); + } } } else