diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 4f8b9312..1410dc9a 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -9915,7 +9915,7 @@ BfTypeDef* BfModule::GetActiveTypeDef(BfTypeInstance* typeInstanceOverride, bool else if ((mCurMethodInstance != NULL) && (mCurMethodInstance->mMethodDef->mDeclaringType != NULL)) { auto declTypeDef = mCurMethodInstance->mMethodDef->mDeclaringType; - useTypeDef = declTypeDef->GetDefinition(); + useTypeDef = declTypeDef->GetDefinition(true); if ((declTypeDef->IsEmitted()) && (useTypeDef->mIsCombinedPartial)) { // 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) { 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) - useTypeDef = mContext->mCurTypeState->mCurTypeDef->GetDefinition(); + useTypeDef = mContext->mCurTypeState->mCurTypeDef->GetDefinition(true); } + return useTypeDef; } diff --git a/IDEHelper/Compiler/BfSystem.h b/IDEHelper/Compiler/BfSystem.h index d8706366..ac0c094f 100644 --- a/IDEHelper/Compiler/BfSystem.h +++ b/IDEHelper/Compiler/BfSystem.h @@ -1205,10 +1205,14 @@ public: bool IsEmitted() { return mEmitParent != NULL; } - BfTypeDef* GetDefinition() + BfTypeDef* GetDefinition(bool getEmitRoot = false) { if (mEmitParent != NULL) + { + if ((getEmitRoot) && (mEmitParent->mIsCombinedPartial)) + return mEmitParent->mPartials[0]; return mEmitParent; + } return this; }