浏览代码

Merge pull request #2189 from Fusioon/fix-#1865

Better interface method matching when names match
Brian Fiete 6 月之前
父节点
当前提交
4693290c1d
共有 1 个文件被更改,包括 9 次插入4 次删除
  1. 9 4
      IDEHelper/Compiler/BfModule.cpp

+ 9 - 4
IDEHelper/Compiler/BfModule.cpp

@@ -26742,12 +26742,17 @@ bool BfModule::SlotVirtualMethod(BfMethodInstance* methodInstance, BfAmbiguityCo
 
 
 					bool isBetter = false;
 					bool isBetter = false;
 					bool isWorse = false;
 					bool isWorse = false;
-					isBetter = (methodInstance->mMethodInfoEx != NULL) && (methodInstance->mMethodInfoEx->mExplicitInterface != NULL);
-					isWorse = (prevMethod->mMethodInfoEx != NULL) && (prevMethod->mMethodInfoEx->mExplicitInterface != NULL);
+					isBetter = methodInstance->mReturnType == iMethodInst->mReturnType;
+					isWorse = prevMethod->mReturnType == iMethodInst->mReturnType;
 					if (isBetter == isWorse)
 					if (isBetter == isWorse)
 					{
 					{
-						isBetter = methodInstance->mReturnType == iMethodInst->mReturnType;
-						isWorse = prevMethod->mReturnType == iMethodInst->mReturnType;
+						isBetter = (methodInstance->mMethodInfoEx != NULL) && (methodInstance->mMethodInfoEx->mExplicitInterface != NULL);
+						isWorse = (prevMethod->mMethodInfoEx != NULL) && (prevMethod->mMethodInfoEx->mExplicitInterface != NULL);
+						if ((isBetter) && (isWorse))
+						{
+							isBetter = methodInstance->mMethodInfoEx->mExplicitInterface == ifaceInst;
+							isWorse = prevMethod->mMethodInfoEx->mExplicitInterface == ifaceInst;
+						}
 					}
 					}
 
 
 					if (isBetter == isWorse)
 					if (isBetter == isWorse)