Quellcode durchsuchen

Improved namespace search in emitted members in types with extensions

Brian Fiete vor 3 Jahren
Ursprung
Commit
7406780f57
2 geänderte Dateien mit 9 neuen und 4 gelöschten Zeilen
  1. 4 3
      IDEHelper/Compiler/BfModuleTypeUtils.cpp
  2. 5 1
      IDEHelper/Compiler/BfSystem.h

+ 4 - 3
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;
 }
 

+ 5 - 1
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;
 	}