1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Improved canceled comptime type rebuilds

This commit is contained in:
Brian Fiete 2023-07-06 09:21:40 -04:00
parent 19fcb7f890
commit 0b68abde8f
2 changed files with 9 additions and 4 deletions

View file

@ -5332,7 +5332,7 @@ BfTypedValue BfExprEvaluator::LoadField(BfAstNode* targetSrc, BfTypedValue targe
if (fieldInstance->mDataIdx < 0) if (fieldInstance->mDataIdx < 0)
{ {
BF_ASSERT(typeInstance->mTypeFailed); mModule->InternalError("LoadField field DataIdx<0 where InstSize>0");
return mModule->GetDefaultTypedValue(resolvedFieldType); return mModule->GetDefaultTypedValue(resolvedFieldType);
} }

View file

@ -5129,6 +5129,11 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
typeInstance->mCeTypeInfo->mHash = typeInstance->mCeTypeInfo->mNext->mHash; typeInstance->mCeTypeInfo->mHash = typeInstance->mCeTypeInfo->mNext->mHash;
typeInstance->mCeTypeInfo->mAlign = typeInstance->mCeTypeInfo->mNext->mAlign; typeInstance->mCeTypeInfo->mAlign = typeInstance->mCeTypeInfo->mNext->mAlign;
} }
else
{
if ((typeInstance->mCeTypeInfo->mHash != typeInstance->mCeTypeInfo->mNext->mHash) && (!typeInstance->mCeTypeInfo->mHash.IsZero()))
mContext->QueueMidCompileRebuildDependentTypes(typeInstance, "canceled comptime hash changed");
}
delete typeInstance->mCeTypeInfo->mNext; delete typeInstance->mCeTypeInfo->mNext;
typeInstance->mCeTypeInfo->mNext = NULL; typeInstance->mCeTypeInfo->mNext = NULL;
@ -5137,7 +5142,7 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
{ {
// Removed emissions // Removed emissions
if (!typeInstance->mCeTypeInfo->mHash.IsZero()) if (!typeInstance->mCeTypeInfo->mHash.IsZero())
mContext->QueueMidCompileRebuildDependentTypes(typeInstance, "comptime hash changed"); mContext->QueueMidCompileRebuildDependentTypes(typeInstance, "removed comptime hash changed");
typeInstance->mCeTypeInfo->mEmitSourceMap.Clear(); typeInstance->mCeTypeInfo->mEmitSourceMap.Clear();
typeInstance->mCeTypeInfo->mOnCompileMap.Clear(); typeInstance->mCeTypeInfo->mOnCompileMap.Clear();
typeInstance->mCeTypeInfo->mTypeIFaceMap.Clear(); typeInstance->mCeTypeInfo->mTypeIFaceMap.Clear();