mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Fixed lambda bind to delegate type with outer generic
This commit is contained in:
parent
58370d2c8c
commit
16cd9f7a77
4 changed files with 16 additions and 5 deletions
|
@ -10455,10 +10455,9 @@ void BfExprEvaluator::Visit(BfDelegateBindExpression* delegateBindExpr)
|
|||
|
||||
Val128 hash128 = hashCtx.Finish128();
|
||||
BfClosureType* checkClosureType = new BfClosureType(delegateTypeInstance, hash128);
|
||||
checkClosureType->mContext = mModule->mContext;
|
||||
|
||||
checkClosureType->mContext = mModule->mContext;
|
||||
checkClosureType->mBaseType = delegateTypeInstance;
|
||||
BfType* resolvedClosureType = mModule->ResolveType(checkClosureType, BfPopulateType_Identity);
|
||||
BfType* resolvedClosureType = mModule->ResolveType(checkClosureType, BfPopulateType_TypeDef);
|
||||
closureTypeInst = (BfClosureType*)resolvedClosureType;
|
||||
if (checkClosureType == resolvedClosureType)
|
||||
{
|
||||
|
@ -11413,7 +11412,7 @@ BfLambdaInstance* BfExprEvaluator::GetLambdaInstance(BfLambdaBindExpression* lam
|
|||
BfClosureType* checkClosureType = new BfClosureType(delegateTypeInstance, hash128);
|
||||
checkClosureType->mContext = mModule->mContext;
|
||||
checkClosureType->mBaseType = delegateTypeInstance;
|
||||
BfType* resolvedClosureType = mModule->ResolveType(checkClosureType, BfPopulateType_Identity);
|
||||
BfType* resolvedClosureType = mModule->ResolveType(checkClosureType, BfPopulateType_TypeDef);
|
||||
closureTypeInst = (BfClosureType*)resolvedClosureType;
|
||||
if (checkClosureType == resolvedClosureType)
|
||||
{
|
||||
|
|
|
@ -982,6 +982,9 @@ void BfModule::PopulateType(BfType* resolvedTypeRef, BfPopulateType populateType
|
|||
if (!resolvedTypeRef->IsIncomplete())
|
||||
return;
|
||||
|
||||
if (populateType <= BfPopulateType_TypeDef)
|
||||
return;
|
||||
|
||||
auto typeInstance = resolvedTypeRef->ToTypeInstance();
|
||||
CheckInjectNewRevision(typeInstance);
|
||||
|
||||
|
|
|
@ -2289,7 +2289,8 @@ void BfClosureType::Init(BfProject* bfProject)
|
|||
mTypeDef->mProject = bfProject;
|
||||
mTypeDef->mTypeCode = srcTypeDef->mTypeCode;
|
||||
mTypeDef->mName = system->GetAtom(srcTypeDef->mName->mString + mNameAdd);
|
||||
mTypeDef->mOuterType = srcTypeDef->mOuterType;
|
||||
// Purposely leave out 'mOuterType' - this fails if the outer type is generic
|
||||
//mTypeDef->mOuterType = srcTypeDef->mOuterType;
|
||||
mTypeDef->mNamespace = srcTypeDef->mNamespace;
|
||||
system->AddNamespaceUsage(mTypeDef->mNamespace, mTypeDef->mProject);
|
||||
mTypeDef->mHash = srcTypeDef->mHash;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue