1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Fixed reification issues, mut-vs-imut method mangling

This commit is contained in:
Brian Fiete 2020-10-22 17:25:19 -07:00
parent 425284f023
commit 9a857cceb3
8 changed files with 31 additions and 18 deletions

View file

@ -447,7 +447,7 @@ bool BfContext::ProcessWorkList(bool onlyReifiedTypes, bool onlyReifiedMethods)
auto typeInst = methodSpecializationRequest.mType->ToTypeInstance();
module->GetMethodInstance(methodSpecializationRequest.mType->ToTypeInstance(), methodSpecializationRequest.mMethodDef, methodSpecializationRequest.mMethodGenericArguments,
(BfGetMethodInstanceFlags)(methodSpecializationRequest.mFlags | BfGetMethodInstanceFlag_ResultNotUsed));
(BfGetMethodInstanceFlags)(methodSpecializationRequest.mFlags | BfGetMethodInstanceFlag_ResultNotUsed), methodSpecializationRequest.mForeignType);
didWork = true;
}
}
@ -505,7 +505,11 @@ bool BfContext::ProcessWorkList(bool onlyReifiedTypes, bool onlyReifiedMethods)
module->PopulateType(owner, BfPopulateType_Full);
if (methodInstance->mDeclModule != NULL)
{
if (!mCompiler->mIsResolveOnly)
BF_ASSERT(!methodInstance->mIsReified || methodInstance->mDeclModule->mIsModuleMutable);
ProcessMethod(methodInstance);
}
}
workIdx = mMethodWorkList.RemoveAt(workIdx);
@ -2452,7 +2456,7 @@ void BfContext::QueueMethodSpecializations(BfTypeInstance* typeInst, bool checkS
specializationRequest->mFromModuleRevision = typeInst->mModule->mRevision;
specializationRequest->mMethodDef = methodRef.mTypeInstance->mTypeDef->mMethods[methodRef.mMethodNum];
specializationRequest->mMethodGenericArguments = methodRef.mMethodGenericArguments;
specializationRequest->mType = methodRef.mTypeInstance;
specializationRequest->mType = methodRef.mTypeInstance;
BfLogSysM("QueueMethodSpecializations typeInst %p specializationRequest %p methodDef %p fromModule %p\n", typeInst, specializationRequest, methodDef, specializationRequest->mFromModule);
}