From 02f130cf0e7a88a87d57143a3219629e0a89925e Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sat, 27 Apr 2024 13:24:58 +0200 Subject: [PATCH] java: RefClass optimization GitOrigin-RevId: 24d7d819d06f154547f6a406d0fc84abdf4e4377 --- .../reference/RefClassImpl.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefClassImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefClassImpl.java index f312d5475755..2c82aca278a9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefClassImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefClassImpl.java @@ -107,13 +107,15 @@ public final class RefClassImpl extends RefJavaElementImpl implements RefClass { if (!myManager.isDeclarationsFound()) return; setInterface(uClass.isInterface()); + setAnnotationType(uClass.isAnnotationType()); + setAnonymous(uClass instanceof UAnonymousClass); final PsiClass psiClass = uClass.getJavaPsi(); - setRecord(psiClass.isRecord()); - setAnnotationType(psiClass.isAnnotationType()); - setEnum(psiClass.isEnum()); - setAbstract(psiClass.hasModifier(JvmModifier.ABSTRACT)); - setAnonymous(uClass.getName() == null); - setLocal(!isAnonymous() && parent != null && !(parent instanceof UClass)); + if (!isAnonymous()) { + setRecord(psiClass.isRecord()); + setEnum(psiClass.isEnum()); + setAbstract(psiClass.hasModifier(JvmModifier.ABSTRACT)); + setLocal(parent != null && !(parent instanceof UClass)); + } initializeSuperReferences(uClass); @@ -160,7 +162,7 @@ public final class RefClassImpl extends RefJavaElementImpl implements RefClass { } } - if (!memberSeen || uClass.isInterface() || psiClass.isRecord() || psiClass instanceof PsiAnonymousClass) { + if (!memberSeen || isInterface() || isRecord() || isAnonymous()) { utilityClass = false; } if (!utilityClass && psiClass.getLanguage().isKindOf("kotlin")) { @@ -174,7 +176,7 @@ public final class RefClassImpl extends RefJavaElementImpl implements RefClass { } } - if (!isInterface() && !isAnonymous() && !isEnum() && !constructorSeen) { + if (!isInterface() && !isAnonymous() && !isEnum() && !isRecord() && !constructorSeen) { setDefaultConstructor(new RefImplicitConstructorImpl(this)); } @@ -201,19 +203,17 @@ public final class RefClassImpl extends RefJavaElementImpl implements RefClass { } private void initializeSuperReferences(UClass uClass) { - if (!isSelfInheritor(uClass)) { - uClass.getUastSuperTypes().stream() - .map(t -> PsiUtil.resolveClassInClassTypeOnly(t.getType())) - .filter(Objects::nonNull) - .filter(c -> getRefJavaManager().belongsToScope(c)) - .forEach(c -> { - RefClassImpl refClass = (RefClassImpl)getRefManager().getReference(c); - if (refClass != null) { - addBaseClass(refClass); - getRefManager().executeTask(() -> refClass.addDerivedReference(this)); - } - }); - } + uClass.getUastSuperTypes().stream() + .map(t -> PsiUtil.resolveClassInClassTypeOnly(t.getType())) + .filter(Objects::nonNull) + .filter(c -> getRefJavaManager().belongsToScope(c)) + .forEach(c -> { + RefClassImpl refClass = (RefClassImpl)getRefManager().getReference(c); + if (refClass != null) { + addBaseClass(refClass); + getRefManager().executeTask(() -> refClass.addDerivedReference(this)); + } + }); } @Override