浏览代码

Fixed function pointers with 'void* this'

Brian Fiete 4 年之前
父节点
当前提交
9d3e245f69
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      IDEHelper/Compiler/BfExprEvaluator.cpp

+ 2 - 2
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -5027,7 +5027,7 @@ BfTypedValue BfExprEvaluator::CreateCall(BfAstNode* targetSrc, BfMethodInstance*
 			{
 			{
 				if (mModule->mIsConstModule)
 				if (mModule->mIsConstModule)
 				{
 				{
-					funcCallInst = mModule->mBfIRBuilder->ConstEval_GetInterfaceFunc(irArgs[0], methodInstance->mMethodInstanceGroup->mOwner->mTypeId, methodInstance->mVirtualTableIdx, funcPtrType1);
+					funcCallInst = mModule->mBfIRBuilder->ConstEval_GetInterfaceFunc(irArgs[0], methodInstance->mMethodInstanceGroup->mOwner->mTypeId, methodInstance->mMethodDef->mIdx, funcPtrType1);
 				}
 				}
 				else
 				else
 				{
 				{
@@ -6518,7 +6518,7 @@ SplatArgs(lookupVal, irArgs);
 			{
 			{
 				auto underlyingType = wantType->GetUnderlyingType();
 				auto underlyingType = wantType->GetUnderlyingType();
 				mModule->PopulateType(underlyingType, BfPopulateType_Data);
 				mModule->PopulateType(underlyingType, BfPopulateType_Data);
-				if (underlyingType->IsValuelessType())
+				if ((underlyingType->IsValuelessType()) && (!underlyingType->IsVoid()))
 				{
 				{
 					// We don't actually pass a 'this' pointer for mut methods on valueless structs
 					// We don't actually pass a 'this' pointer for mut methods on valueless structs
 					argIdx++;
 					argIdx++;