diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java index 2c21dde2bf78..82707ee2b2e7 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java @@ -17,6 +17,7 @@ package com.intellij.compiler.backwardRefs; import com.intellij.compiler.server.BuildManager; import com.intellij.openapi.application.ReadAction; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Couple; @@ -45,6 +46,8 @@ import java.util.*; import static java.util.stream.Collectors.*; class CompilerReferenceReader { + private final static Logger LOG = Logger.getInstance(CompilerReferenceReader.class); + private final CompilerBackwardReferenceIndex myIndex; private CompilerReferenceReader(File buildDir) throws IOException { @@ -85,6 +88,7 @@ class CompilerReferenceReader { GlobalSearchScope effectiveSearchScope = GlobalSearchScope.notScope(dirtyScope).intersectWith(searchScope); LanguageLightRefAdapter adapter = CompilerReferenceServiceImpl.findAdapterForFileType(fileType); + LOG.assertTrue(adapter != null, "adapter is null for file type: " + fileType); Class requiredLightRefClass = searchType.getRequiredClass(adapter); Map> candidatesPerFile = candidates .stream() diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java index 7cf8a437061d..93431408923c 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java @@ -194,7 +194,7 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceService imple @NotNull GlobalSearchScope searchScope, @NotNull FileType searchFileType, @NotNull CompilerHierarchySearchType searchType) { - if (!isServiceEnabledFor(aClass) || searchScope == LibraryScopeCache.getInstance(myProject).getLibrariesOnlyScope()) return null; + if (!isServiceEnabledFor(aClass) || searchScope == LibraryScopeCache.getInstance(myProject).getLibrariesOnlyScope()) return null; Couple> directInheritorsAndCandidates = CachedValuesManager.getCachedValue(aClass, () -> CachedValueProvider.Result.create( @@ -284,6 +284,7 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceService imple return null; } final LanguageLightRefAdapter adapter = findAdapterForFileType(file.getFileType()); + if (adapter == null) return null; final LightRef ref = ReadAction.compute(() -> adapter.asLightUsage(psiElement, myReader.getNameEnumerator())); if (ref == null) return null; if (place == ElementPlace.LIB && buildHierarchyForLibraryElements) { @@ -360,13 +361,14 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceService imple return myProject; } + @Nullable static LanguageLightRefAdapter findAdapterForFileType(@NotNull FileType fileType) { for (LanguageLightRefAdapter adapter : LanguageLightRefAdapter.INSTANCES) { if (adapter.getFileTypes().contains(fileType)) { return adapter; } } - throw new AssertionError("adapter is not found for: " + fileType); + return null; } private static void executeOnBuildThread(Runnable compilationFinished) { diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java index e267486b576d..cf7ef670c80a 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java @@ -281,7 +281,7 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor (PsiClass)PsiUtil.preferCompiledElement(parameters.getClassToProcess())); final CompilerReferenceService compilerReferenceService = CompilerReferenceService.getInstance(project); return compilerReferenceService.getDirectInheritors(searchClass, (GlobalSearchScope)useScope,