From 64cce9546b9274bda322c596bccb2065d144cba8 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 5 Feb 2026 20:39:43 +0100 Subject: [PATCH] cleanup [psi]: avoid NULL file instantion on log access Allows avoiding the following exception: java.lang.ExceptionInInitializerError at com.intellij.psi.impl.file.impl.MultiverseFileViewProviderCacheKt.(MultiverseFileViewProviderCache.kt:147) at com.intellij.psi.impl.file.impl.MultiverseFileViewProviderCache.clear(MultiverseFileViewProviderCache.kt:34) at com.intellij.psi.impl.file.impl.FileManagerImpl.lambda$clearViewProviders$4(FileManagerImpl.java:229) at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:589) at com.intellij.psi.impl.file.impl.FileManagerImpl.clearViewProviders(FileManagerImpl.java:225) at com.intellij.psi.impl.file.impl.FileManagerImpl.dispose(FileManagerImpl.java:216) ... Caused by: com.intellij.util.IncorrectOperationException: Sorry but parent: Application ... has already been disposed ... at com.intellij.openapi.util.ObjectTree.register(ObjectTree.java:43) at com.intellij.openapi.util.Disposer.register(Disposer.java:168) at com.intellij.openapi.extensions.ExtensionPointUtil.createDisposable(ExtensionPointUtil.java:79) at com.intellij.openapi.extensions.ExtensionPointUtil.createExtensionDisposable(ExtensionPointUtil.java:50) at com.intellij.openapi.vfs.DeprecatedVirtualFileSystem.startEventPropagation(DeprecatedVirtualFileSystem.java:27) at com.intellij.testFramework.LightVirtualFileBase$MyVirtualFileSystem.(LightVirtualFileBase.java:79) at com.intellij.testFramework.LightVirtualFileBase$MyVirtualFileSystem.(LightVirtualFileBase.java:75) at com.intellij.testFramework.LightVirtualFileBase.(LightVirtualFileBase.java:101) ... GitOrigin-RevId: 8713e0f99880504e003cf2b61f37e11df4d170bb --- .../psi/impl/file/impl/MultiverseFileViewProviderCache.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/file/impl/MultiverseFileViewProviderCache.kt b/platform/core-impl/src/com/intellij/psi/impl/file/impl/MultiverseFileViewProviderCache.kt index e4051b37774b..64c0b16b715c 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/file/impl/MultiverseFileViewProviderCache.kt +++ b/platform/core-impl/src/com/intellij/psi/impl/file/impl/MultiverseFileViewProviderCache.kt @@ -100,7 +100,7 @@ internal class MultiverseFileViewProviderCache : FileViewProviderCache { // cache.cache is in fact ConcurrentWeakValueHashMap. // calling cache.cache.remove(unrelated-object) calls ConcurrentWeakValueHashMap#processQueue under the hood - cache.cache.remove(NULL) + cache.cache.remove(NullFile) } override fun trySetContext(viewProvider: FileViewProvider, context: CodeInsightContext): CodeInsightContext? { @@ -144,7 +144,7 @@ object MultiverseFileViewProviderCacheLog { } } -private val NULL: VirtualFile = LightVirtualFile() +private object NullFile : LightVirtualFile() private typealias FullCacheMap = ConcurrentMap