mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
MethodSignatureUtil.findMethodBySuperMethod used to find super method
This commit is contained in:
+2
-3
@@ -23,9 +23,9 @@ import com.intellij.codeInspection.dataFlow.value.DfaRelationValue.RelationType;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.search.JavaOverridingMethodsSearcher;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
@@ -486,8 +486,7 @@ public class StandardInstructionVisitor extends InstructionVisitor {
|
||||
if (specificQualifierClass != null && qualifierClass != null &&
|
||||
!specificQualifierClass.equals(qualifierClass) &&
|
||||
InheritanceUtil.isInheritorOrSelf(specificQualifierClass, qualifierClass, true)) {
|
||||
PsiMethod realMethod =
|
||||
JavaOverridingMethodsSearcher.findOverridingMethod(method.getProject(), specificQualifierClass, method, qualifierClass);
|
||||
PsiMethod realMethod = MethodSignatureUtil.findMethodBySuperMethod(specificQualifierClass, method, true);
|
||||
if (realMethod != null) {
|
||||
return realMethod;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.search.JavaOverridingMethodsSearcher;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
@@ -105,7 +104,7 @@ public class JavaTargetElementEvaluator extends TargetElementEvaluatorEx2 implem
|
||||
!InheritanceUtil.isInheritorOrSelf(specificQualifierClass, qualifierClass, true)) {
|
||||
return null;
|
||||
}
|
||||
return JavaOverridingMethodsSearcher.findOverridingMethod(method.getProject(), specificQualifierClass, method, qualifierClass);
|
||||
return MethodSignatureUtil.findMethodBySuperMethod(specificQualifierClass, method, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-4
@@ -147,10 +147,10 @@ public class JavaOverridingMethodsSearcher implements QueryExecutor<PsiMethod, O
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiMethod findOverridingMethod(@NotNull Project project,
|
||||
@NotNull PsiClass inheritor,
|
||||
@NotNull PsiMethod method,
|
||||
@NotNull PsiClass methodContainingClass) {
|
||||
static PsiMethod findOverridingMethod(@NotNull Project project,
|
||||
@NotNull PsiClass inheritor,
|
||||
@NotNull PsiMethod method,
|
||||
@NotNull PsiClass methodContainingClass) {
|
||||
String name = method.getName();
|
||||
if (inheritor.findMethodsByName(name, false).length > 0) {
|
||||
PsiMethod found = MethodSignatureUtil.findMethodBySuperSignature(inheritor, getSuperSignature(inheritor, methodContainingClass, method), false);
|
||||
|
||||
@@ -17,6 +17,21 @@ class CovariantReturn {
|
||||
String baz();
|
||||
}
|
||||
|
||||
public interface BaseGeneric<T> {
|
||||
T get(@Nullable T t);
|
||||
}
|
||||
|
||||
public static class DerivedGeneric implements BaseGeneric<Integer> {
|
||||
@Override
|
||||
public Integer get(Integer integer) {
|
||||
return integer == null ? 0 : integer+1;
|
||||
}
|
||||
}
|
||||
|
||||
public static class DerivedGenericImpl extends DerivedGeneric {
|
||||
|
||||
}
|
||||
|
||||
public static boolean bar(@NotNull String s) {
|
||||
return true;
|
||||
}
|
||||
@@ -33,4 +48,8 @@ class CovariantReturn {
|
||||
boolean testType(Base base) {
|
||||
return base instanceof Derived && <warning descr="Condition 'base.baz() instanceof String' is redundant and can be replaced with '!= null'">base.baz() instanceof String</warning>;
|
||||
}
|
||||
|
||||
boolean testTypeGeneric(BaseGeneric<?> base) {
|
||||
return base instanceof DerivedGenericImpl && <warning descr="Condition 'base.get(null) instanceof Integer' is redundant and can be replaced with '!= null'">base.get(null) instanceof Integer</warning>;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user