[workspace file index] diagnostics: report an error to a plugin if 'null' item is returned from getAdditionalProjectLibraries (EA-1194831)

Instead of failing with NullPointerException.

GitOrigin-RevId: 885a78d11460bba19b0e8ad9d70dc60a7c713295
This commit is contained in:
Nikolay Chashnikov
2024-05-09 10:32:22 +02:00
committed by intellij-monorepo-bot
parent c13385ff81
commit 38cb87cb7d

View File

@@ -1,7 +1,9 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.workspaceModel.core.fileIndex.impl
import com.intellij.diagnostic.PluginException
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.AdditionalLibraryRootsProvider
@@ -141,7 +143,12 @@ internal class NonIncrementalContributors(private val project: Project) {
private fun computeFileSets(): Map<VirtualFile, StoredFileSetCollection> {
val result = HashMap<VirtualFile, StoredFileSetCollection>()
AdditionalLibraryRootsProvider.EP_NAME.extensionList.forEach { provider ->
provider.getAdditionalProjectLibraries(project).forEach { library ->
for (library in provider.getAdditionalProjectLibraries(project)) {
if (library == null) {
PluginException.logPluginError(LOG, "The result of AdditionalLibraryRootsProvider.getAdditionalProjectLibraries on ${provider.javaClass} includes 'null' item", null, provider.javaClass)
continue
}
fun registerRoots(files: MutableCollection<VirtualFile>, kind: WorkspaceFileKind, fileSetData: WorkspaceFileSetData) {
files.forEach { root ->
RootFileValidityChecker.correctRoot(root, library, provider)?.let {
@@ -179,6 +186,8 @@ internal class NonIncrementalContributors(private val project: Project) {
fun isPlaceholderReference(entityPointer: EntityPointer<WorkspaceEntity>): Boolean {
return entityPointer is NonIncrementalMarker
}
private val LOG = logger<NonIncrementalContributors>()
}
}