From 38cb87cb7d316f9336f300297a49fe7734a66b7b Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Thu, 9 May 2024 10:32:22 +0200 Subject: [PATCH] [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 --- .../core/fileIndex/impl/NonIncrementalContributors.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/projectModel-impl/src/com/intellij/workspaceModel/core/fileIndex/impl/NonIncrementalContributors.kt b/platform/projectModel-impl/src/com/intellij/workspaceModel/core/fileIndex/impl/NonIncrementalContributors.kt index 4e0b768c216e..801df5f56250 100644 --- a/platform/projectModel-impl/src/com/intellij/workspaceModel/core/fileIndex/impl/NonIncrementalContributors.kt +++ b/platform/projectModel-impl/src/com/intellij/workspaceModel/core/fileIndex/impl/NonIncrementalContributors.kt @@ -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 { val result = HashMap() 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, 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): Boolean { return entityPointer is NonIncrementalMarker } + + private val LOG = logger() } }