mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Improved emitted static field lookup
This commit is contained in:
parent
a69e1cfe6e
commit
1aca5f6771
3 changed files with 8 additions and 2 deletions
|
@ -5385,7 +5385,7 @@ BfTypedValue BfExprEvaluator::LookupField(BfAstNode* targetSrc, BfTypedValue tar
|
|||
if ((!isPopulatingType) && (curCheckType->mDefineState < Beefy::BfTypeDefineState_Defined))
|
||||
{
|
||||
// We MAY have emitted fields so we need to do this
|
||||
mModule->PopulateType(curCheckType);
|
||||
mModule->mContext->mUnreifiedModule->PopulateType(curCheckType, Beefy::BfPopulateType_Interfaces_All);
|
||||
}
|
||||
|
||||
curCheckType->mTypeDef->PopulateMemberSets();
|
||||
|
|
|
@ -2714,7 +2714,7 @@ void BfIRBuilder::CreateTypeDeclaration(BfType* type, bool forceDbgDefine)
|
|||
{
|
||||
auto populateModule = mModule->mContext->mUnreifiedModule;
|
||||
auto typeInstance = type->ToTypeInstance();
|
||||
if (typeInstance != NULL)
|
||||
if ((typeInstance != NULL) && (typeInstance->mModule != NULL))
|
||||
populateModule = typeInstance->mModule;
|
||||
|
||||
bool wantDIData = DbgHasInfo() && (!type->IsUnspecializedType());
|
||||
|
|
|
@ -5221,6 +5221,12 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
|
|||
{
|
||||
if ((fieldTypeInst->mRebuildFlags & BfTypeRebuildFlag_UnderlyingTypeDeferred) != 0)
|
||||
{
|
||||
if (populateType < BfPopulateType_Data)
|
||||
{
|
||||
// We don't actually need the data - bail out
|
||||
return;
|
||||
}
|
||||
|
||||
BfAstNode* refNode = fieldDef->mFieldDeclaration;
|
||||
String failStr;
|
||||
failStr = StrFormat("Circular data reference detected between '%s' and '%s'", TypeToString(mCurTypeInstance).c_str(), TypeToString(fieldTypeInst).c_str());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue