mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
inheritance with checkDeep=false & anonymous fixed (IDEA-151341)
This commit is contained in:
@@ -56,7 +56,13 @@ public class InheritanceImplUtil {
|
||||
@Nullable Set<PsiClass> checkedClasses) {
|
||||
if (candidateClass instanceof PsiAnonymousClass) {
|
||||
final PsiClass baseCandidateClass = ((PsiAnonymousClass)candidateClass).getBaseClassType().resolve();
|
||||
return baseCandidateClass != null && InheritanceUtil.isInheritorOrSelf(baseCandidateClass, baseClass, checkDeep);
|
||||
if (baseCandidateClass != null) {
|
||||
if (!checkDeep) {
|
||||
return baseCandidateClass.equals(baseClass);
|
||||
}
|
||||
return InheritanceUtil.isInheritorOrSelf(baseCandidateClass, baseClass, true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if(checkDeep && LOG.isDebugEnabled()){
|
||||
LOG.debug("Using uncached version for " + candidateClass.getQualifiedName() + " and " + baseClass);
|
||||
|
||||
@@ -1,24 +1,31 @@
|
||||
import java.io.*;
|
||||
|
||||
class Main {
|
||||
static interface A
|
||||
{
|
||||
interface B { }
|
||||
static class Outer {
|
||||
static interface A {
|
||||
interface B {}
|
||||
}
|
||||
|
||||
static class D implements A {
|
||||
private interface B {}
|
||||
}
|
||||
|
||||
|
||||
static class C extends D implements A {
|
||||
interface E extends B {}
|
||||
interface E1 extends D.B {}
|
||||
interface E2 extends A.B {}
|
||||
}
|
||||
}
|
||||
static class E {
|
||||
{
|
||||
D d = new D() {
|
||||
void foo(<error descr="'D.B' has private access in 'D'">B</error> b){
|
||||
|
||||
static class D implements A
|
||||
{
|
||||
private interface B { }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static class C extends D implements A
|
||||
{
|
||||
interface E extends B { }
|
||||
interface E1 extends D.B { }
|
||||
interface E2 extends A.B { }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user