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.<clinit>(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.<init>(LightVirtualFileBase.java:79)
	at com.intellij.testFramework.LightVirtualFileBase$MyVirtualFileSystem.<init>(LightVirtualFileBase.java:75)
	at com.intellij.testFramework.LightVirtualFileBase.<clinit>(LightVirtualFileBase.java:101)
	...

GitOrigin-RevId: 8713e0f99880504e003cf2b61f37e11df4d170bb
This commit is contained in:
Max Medvedev
2026-02-05 21:39:23 +00:00
committed by intellij-monorepo-bot
parent 7b8d4b5d4a
commit 64cce9546b
@@ -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<VirtualFile, FileProviderMap>