From a471e820c28d25a9b73db182d03e6feedbc75311 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 26 Oct 2021 22:10:31 +0200 Subject: [PATCH] [java] skip module search if there is no module-info/manifest in module (IDEA-278296) GitOrigin-RevId: f5a46235791fa8461334d06f747a3a52e443eb7a --- .../daemon/impl/analysis/JavaModuleGraphUtil.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java index f62587fbd96b..912d96d4b7ed 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java @@ -6,6 +6,7 @@ import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectFileIndex; @@ -16,6 +17,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.java.stubs.index.JavaModuleNameIndex; import com.intellij.psi.impl.light.LightJavaModule; +import com.intellij.psi.search.FilenameIndex; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.util.CachedValueProvider.Result; @@ -111,6 +113,12 @@ public final class JavaModuleGraphUtil { @Nullable private static PsiJavaModule findDescriptionByModuleInner(@NotNull Module module, boolean inTests) { Project project = module.getProject(); + GlobalSearchScope moduleScope = module.getModuleScope(); + if (!DumbService.isDumb(project) && + FilenameIndex.getFilesByName(project, PsiJavaModule.MODULE_INFO_FILE, moduleScope).length == 0 && + FilenameIndex.getFilesByName(project, JarFile.MANIFEST_NAME, moduleScope).length == 0) { + return null; + } JavaSourceRootType rootType = inTests ? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE; List sourceRoots = ModuleRootManager.getInstance(module).getSourceRoots(rootType); List files = ContainerUtil.mapNotNull(sourceRoots, root -> root.findChild(PsiJavaModule.MODULE_INFO_FILE));