[java] skip module search if there is no module-info/manifest in module (IDEA-278296)

GitOrigin-RevId: f5a46235791fa8461334d06f747a3a52e443eb7a
This commit is contained in:
Anna Kozlova
2021-10-27 17:58:01 +00:00
committed by intellij-monorepo-bot
parent c89147b17a
commit a471e820c2
@@ -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<VirtualFile> sourceRoots = ModuleRootManager.getInstance(module).getSourceRoots(rootType);
List<VirtualFile> files = ContainerUtil.mapNotNull(sourceRoots, root -> root.findChild(PsiJavaModule.MODULE_INFO_FILE));