1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Improved namespace search in emitted members in types with extensions

This commit is contained in:
Brian Fiete 2022-08-25 07:46:37 -07:00
parent 15fd1b5f3f
commit 7406780f57
2 changed files with 9 additions and 4 deletions

View file

@ -9915,7 +9915,7 @@ BfTypeDef* BfModule::GetActiveTypeDef(BfTypeInstance* typeInstanceOverride, bool
else if ((mCurMethodInstance != NULL) && (mCurMethodInstance->mMethodDef->mDeclaringType != NULL)) else if ((mCurMethodInstance != NULL) && (mCurMethodInstance->mMethodDef->mDeclaringType != NULL))
{ {
auto declTypeDef = mCurMethodInstance->mMethodDef->mDeclaringType; auto declTypeDef = mCurMethodInstance->mMethodDef->mDeclaringType;
useTypeDef = declTypeDef->GetDefinition(); useTypeDef = declTypeDef->GetDefinition(true);
if ((declTypeDef->IsEmitted()) && (useTypeDef->mIsCombinedPartial)) if ((declTypeDef->IsEmitted()) && (useTypeDef->mIsCombinedPartial))
{ {
// Always consider methods to belong to the primary type declaration // Always consider methods to belong to the primary type declaration
@ -9925,10 +9925,11 @@ BfTypeDef* BfModule::GetActiveTypeDef(BfTypeInstance* typeInstanceOverride, bool
else if (mContext->mCurTypeState != NULL) else if (mContext->mCurTypeState != NULL)
{ {
if ((mContext->mCurTypeState->mCurFieldDef != NULL) && (mContext->mCurTypeState->mCurFieldDef->mDeclaringType != NULL)) if ((mContext->mCurTypeState->mCurFieldDef != NULL) && (mContext->mCurTypeState->mCurFieldDef->mDeclaringType != NULL))
useTypeDef = mContext->mCurTypeState->mCurFieldDef->mDeclaringType->GetDefinition(); useTypeDef = mContext->mCurTypeState->mCurFieldDef->mDeclaringType->GetDefinition(true);
else if (mContext->mCurTypeState->mCurTypeDef != NULL) else if (mContext->mCurTypeState->mCurTypeDef != NULL)
useTypeDef = mContext->mCurTypeState->mCurTypeDef->GetDefinition(); useTypeDef = mContext->mCurTypeState->mCurTypeDef->GetDefinition(true);
} }
return useTypeDef; return useTypeDef;
} }

View file

@ -1205,10 +1205,14 @@ public:
bool IsEmitted() { return mEmitParent != NULL; } bool IsEmitted() { return mEmitParent != NULL; }
BfTypeDef* GetDefinition() BfTypeDef* GetDefinition(bool getEmitRoot = false)
{ {
if (mEmitParent != NULL) if (mEmitParent != NULL)
{
if ((getEmitRoot) && (mEmitParent->mIsCombinedPartial))
return mEmitParent->mPartials[0];
return mEmitParent; return mEmitParent;
}
return this; return this;
} }