mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Improved mid-compile deleted type handling
This commit is contained in:
parent
188ff74128
commit
4ba8f6b0f6
5 changed files with 39 additions and 5 deletions
|
@ -7791,17 +7791,27 @@ BfUnknownSizedArrayType* BfModule::CreateUnknownSizedArrayType(BfType* resolvedT
|
|||
BfPointerType* BfModule::CreatePointerType(BfType* resolvedType)
|
||||
{
|
||||
BF_ASSERT(!resolvedType->IsVar());
|
||||
BF_ASSERT_REL(!resolvedType->IsDeleting());
|
||||
|
||||
|
||||
auto pointerType = mContext->mPointerTypePool.Get();
|
||||
pointerType->mContext = mContext;
|
||||
pointerType->mElementType = resolvedType;
|
||||
auto resolvedPointerType = (BfPointerType*)ResolveType(pointerType);
|
||||
if (resolvedPointerType != pointerType)
|
||||
{
|
||||
mContext->mPointerTypePool.GiveBack(pointerType);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (resolvedType->IsDeleting())
|
||||
{
|
||||
mCompiler->RequestExtraCompile();
|
||||
InternalError("CreatePointerType using deleted type");
|
||||
mContext->DeleteType(resolvedPointerType);
|
||||
}
|
||||
}
|
||||
|
||||
BF_ASSERT(resolvedPointerType->mElementType == resolvedType);
|
||||
|
||||
|
||||
return resolvedPointerType;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue