mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
default methods: check for super class is now needed (IDEA-122720)
This commit is contained in:
@@ -101,7 +101,7 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
|
||||
@NotNull
|
||||
public static JavaResolveResult getAccessObjectClass(@NotNull PsiExpression expression) {
|
||||
if (expression instanceof PsiSuperExpression) return JavaResolveResult.EMPTY;
|
||||
if (expression instanceof PsiSuperExpression && !isLanguageLevel8OrHigher(expression)) return JavaResolveResult.EMPTY;
|
||||
PsiType type = expression.getType();
|
||||
if (type instanceof PsiClassType) {
|
||||
return ((PsiClassType)type).resolveGenerics();
|
||||
|
||||
@@ -439,7 +439,7 @@ public class PsiScopesUtil {
|
||||
}
|
||||
else if (resolve instanceof PsiClass) {
|
||||
PsiExpression qualifier = methodCall.getMethodExpression().getQualifierExpression();
|
||||
if (!(qualifier instanceof PsiSuperExpression)) {
|
||||
if (!(qualifier instanceof PsiSuperExpression) || PsiUtil.isLanguageLevel8OrHigher(methodCall)) {
|
||||
processor.setAccessClass((PsiClass)PsiUtil.getAccessObjectClass(qualifier).getElement());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
interface I {
|
||||
default void f() {}
|
||||
}
|
||||
|
||||
class P {
|
||||
public void f() {}
|
||||
}
|
||||
|
||||
class AP extends P implements I {
|
||||
@Override
|
||||
public void f() {
|
||||
I.super.f();
|
||||
}
|
||||
}
|
||||
|
||||
class AC implements Cloneable {
|
||||
|
||||
public Object clone() throws CloneNotSupportedException {
|
||||
return Cloneable.super.<error descr="'clone()' has protected access in 'java.lang.Object'">clone</error>();
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ public class Interface8MethodsHighlightingTest extends LightDaemonAnalyzerTestCa
|
||||
public void testDefaultMethodOverrideEquivalentObject() { doTest(false, false); }
|
||||
public void testStaticMethods() { doTest(false, false); }
|
||||
public void testFinalStaticDefaultMethods() { doTest(false, false); }
|
||||
public void testIDEA122720() { doTest(false, false); }
|
||||
public void testDefaultSupersInStaticContext() {
|
||||
doTest(false, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user