mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
More robust handling of missing system types
This commit is contained in:
parent
75e075b8d9
commit
06a073d0e7
4 changed files with 23 additions and 15 deletions
|
@ -3001,12 +3001,14 @@ void BfCompiler::UpdateRevisedTypes()
|
|||
//
|
||||
{
|
||||
BfAtomComposite objectName;
|
||||
mSystem->ParseAtomComposite("System.Object", objectName);
|
||||
for (auto itr = mSystem->mTypeDefs.TryGet(objectName); itr != mSystem->mTypeDefs.end(); ++itr)
|
||||
if (mSystem->ParseAtomComposite("System.Object", objectName))
|
||||
{
|
||||
BfTypeDef* typeDef = *itr;
|
||||
if ((typeDef->mFullName == objectName) && (typeDef->mTypeCode == BfTypeCode_Object))
|
||||
corlibProjects.Add(typeDef->mProject);
|
||||
for (auto itr = mSystem->mTypeDefs.TryGet(objectName); itr != mSystem->mTypeDefs.end(); ++itr)
|
||||
{
|
||||
BfTypeDef* typeDef = *itr;
|
||||
if ((typeDef->mFullName == objectName) && (typeDef->mTypeCode == BfTypeCode_Object))
|
||||
corlibProjects.Add(typeDef->mProject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6742,7 +6744,8 @@ bool BfCompiler::DoCompile(const StringImpl& outputDirectory)
|
|||
|
||||
mSystem->CheckLockYield();
|
||||
|
||||
mContext->mScratchModule->ResolveTypeDef(mBfObjectTypeDef);
|
||||
if (mBfObjectTypeDef != NULL)
|
||||
mContext->mScratchModule->ResolveTypeDef(mBfObjectTypeDef);
|
||||
VisitSourceExteriorNodes();
|
||||
|
||||
if (!mIsResolveOnly)
|
||||
|
@ -6827,7 +6830,8 @@ bool BfCompiler::DoCompile(const StringImpl& outputDirectory)
|
|||
|
||||
//
|
||||
{
|
||||
mContext->mScratchModule->ResolveTypeDef(mBfObjectTypeDef, BfPopulateType_Full);
|
||||
if (mBfObjectTypeDef != NULL)
|
||||
mContext->mScratchModule->ResolveTypeDef(mBfObjectTypeDef, BfPopulateType_Full);
|
||||
|
||||
mContext->RemapObject();
|
||||
|
||||
|
|
|
@ -2723,8 +2723,10 @@ void BfContext::RemoveInvalidWorkItems()
|
|||
}
|
||||
|
||||
void BfContext::RemapObject()
|
||||
{
|
||||
|
||||
{
|
||||
if (mCompiler->mBfObjectTypeDef == NULL)
|
||||
return;
|
||||
|
||||
// There are several types that get their LLVM type mapped to Object, so make sure to remap that
|
||||
// for when Object itself gets recreated
|
||||
|
||||
|
|
|
@ -2567,7 +2567,8 @@ void BfModule::UpdateExprSrcPos(BfAstNode* astNode, BfSrcPosFlags flags)
|
|||
|
||||
void BfModule::UseDefaultSrcPos(BfSrcPosFlags flags, int debugLocOffset)
|
||||
{
|
||||
UpdateSrcPos(mCompiler->mBfObjectTypeDef->mTypeDeclaration, flags, debugLocOffset);
|
||||
if (mCompiler->mBfObjectTypeDef != NULL)
|
||||
UpdateSrcPos(mCompiler->mBfObjectTypeDef->mTypeDeclaration, flags, debugLocOffset);
|
||||
SetIllegalSrcPos();
|
||||
}
|
||||
|
||||
|
@ -19524,7 +19525,9 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup)
|
|||
mBfIRBuilder->ClearDebugLocation();
|
||||
PopulateType(mCurTypeInstance, BfPopulateType_Data);
|
||||
auto thisVal = GetThis();
|
||||
int prevSize = mContext->mBfObjectType->mInstSize;
|
||||
int prevSize = 0;
|
||||
if (mContext->mBfObjectType != NULL)
|
||||
prevSize = mContext->mBfObjectType->mInstSize;
|
||||
int curSize = mCurTypeInstance->mInstSize;
|
||||
if (curSize > prevSize)
|
||||
{
|
||||
|
|
|
@ -1312,9 +1312,8 @@ void BfModule::PopulateType(BfType* resolvedTypeRef, BfPopulateType populateType
|
|||
case BfTypeCode_Var:
|
||||
case BfTypeCode_Let:
|
||||
{
|
||||
auto objType = mContext->mBfObjectType;
|
||||
primitiveType->mSize = objType->mSize;
|
||||
primitiveType->mAlign = objType->mAlign;
|
||||
primitiveType->mSize = mSystem->mPtrSize;
|
||||
primitiveType->mAlign = mSystem->mPtrSize;
|
||||
resolvedTypeRef->mDefineState = BfTypeDefineState_Defined;
|
||||
}
|
||||
return;
|
||||
|
@ -1415,7 +1414,7 @@ void BfModule::PopulateType(BfType* resolvedTypeRef, BfPopulateType populateType
|
|||
{
|
||||
if (typeInstance->mTypeDef == mCompiler->mBfObjectTypeDef)
|
||||
mContext->mBfObjectType = typeInstance;
|
||||
else
|
||||
else if (mCompiler->mBfObjectTypeDef != NULL)
|
||||
ResolveTypeDef(mCompiler->mBfObjectTypeDef);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue