mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
highlighting: don't check static methods for unrelated inheritance (IDEA-178539)
in class case, static methods must have signatures with different erasures, for interfaces, static methods
This commit is contained in:
@@ -541,7 +541,9 @@ public class GenericsHighlightUtil {
|
||||
for (HierarchicalMethodSignature hms : visibleSignatures) {
|
||||
final PsiMethod method = hms.getMethod();
|
||||
if (method.isConstructor()) continue;
|
||||
if (method.hasModifierProperty(PsiModifier.ABSTRACT) || method.hasModifierProperty(PsiModifier.DEFAULT)) continue;
|
||||
if (method.hasModifierProperty(PsiModifier.ABSTRACT) ||
|
||||
method.hasModifierProperty(PsiModifier.DEFAULT) ||
|
||||
method.hasModifierProperty(PsiModifier.STATIC)) continue;
|
||||
if (psiClass.findMethodsBySignature(method, false).length > 0) continue;
|
||||
final PsiClass containingClass = method.getContainingClass();
|
||||
if (containingClass == null) continue;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import java.util.List;
|
||||
|
||||
class InterfaceStaticMethodsWithSameErasure {
|
||||
interface A<I, R> {
|
||||
static <I, R> A<I, R> foo(List<I> a) { return null; }
|
||||
}
|
||||
|
||||
interface B<I, R> extends A<I, R> {
|
||||
static <I, R> B<I, R> foo(List<R> b) { return null; }
|
||||
}
|
||||
|
||||
static abstract class C<I, R> implements B<I, R> { }
|
||||
|
||||
static class D<I, R> extends C<I, R> { }
|
||||
}
|
||||
@@ -42,6 +42,7 @@ public class Interface8MethodsHighlightingTest extends LightCodeInsightFixtureTe
|
||||
public void testStaticMethods() { doTest(false, false); }
|
||||
public void testFinalStaticDefaultMethods() { doTest(false, false); }
|
||||
public void testIDEA122720() { doTest(false, false); }
|
||||
public void testInterfaceStaticMethodsWithSameErasure() { doTest(false, false); }
|
||||
public void testIDEA123839() { doTest(false, false); }
|
||||
public void testStaticOverloading() { doTest(false, false); }
|
||||
public void testDefaultSupersInStaticContext() {
|
||||
|
||||
Reference in New Issue
Block a user