JavaCompletionUtil: use findMethodInSuperClassBySignatureInDerived

Review ID: IDEA-CR-27564
This commit is contained in:
Tagir Valeev
2017-12-05 14:47:51 +07:00
parent f0e1044217
commit e9f00a8789

View File

@@ -44,7 +44,6 @@ import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.JBIterable;
import com.siyeh.ig.psiutils.SideEffectChecker;
import gnu.trove.THashSet;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -365,12 +364,13 @@ public class JavaCompletionUtil {
PsiMethod method = (PsiMethod)o;
PsiClassType.ClassResolveResult plainResult = ((PsiClassType)plainQualifier).resolveGenerics();
PsiClass plainClass = plainResult.getElement();
HierarchicalMethodSignature signature = method.getHierarchicalMethodSignature();
if (plainClass != null && StreamEx.of(signature.getSuperSignatures()).prepend(signature)
.anyMatch(sig -> MethodSignatureUtil.findMethodBySignature(plainClass, sig, true) != null)) {
PsiClass castClass = ((PsiClassType)castType).resolveGenerics().getElement();
PsiClass castClass = ((PsiClassType)castType).resolveGenerics().getElement();
if (castClass == null || !castClass.isInheritor(plainClass, true)) {
if (plainClass != null && castClass != null &&
MethodSignatureUtil.findMethodInSuperClassBySignatureInDerived(
castClass, plainClass, method.getSignature(plainResult.getSubstitutor()), true) != null) {
if (!castClass.isInheritor(plainClass, true)) {
return false;
}