Java: performance - avoid expensive inheritor searches

GitOrigin-RevId: 213914d469b705358a05f8361280b2b55eb19331
This commit is contained in:
Bas Leijdekkers
2023-11-14 11:46:46 +01:00
committed by intellij-monorepo-bot
parent 159cf612e9
commit 2960f7659b

View File

@@ -18,6 +18,7 @@ import com.intellij.refactoring.util.RefactoringUIUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
import com.siyeh.IntentionPowerPackBundle;
import com.siyeh.ig.psiutils.DeclarationSearchUtils;
import one.util.streamex.EntryStream;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -107,9 +108,11 @@ public class ConvertInterfaceToClassIntention extends PsiBasedModCommandAction<P
if (!aClass.isInterface() || aClass.isAnnotationType()) {
return false;
}
if (DeclarationSearchUtils.isTooExpensiveToSearch(aClass, false)) {
return false;
}
final SearchScope useScope = aClass.getUseScope();
for (PsiClass inheritor :
ClassInheritorsSearch.search(aClass, useScope, true)) {
for (PsiClass inheritor : ClassInheritorsSearch.search(aClass, useScope, true)) {
if (inheritor.isInterface()) {
return false;
}