From f8ffdf7da73154045ef2415a2a16f416eb6b7cda Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 8 Jan 2026 12:53:18 +0100 Subject: [PATCH] (part of IJPL-220534) cleanup: show the container class in "already disposed" error GitOrigin-RevId: 897fc390a6e363ebdafe483bf4fa139db15c60c8 --- .../serviceContainer/ComponentManagerImpl.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/platform/service-container/src/com/intellij/serviceContainer/ComponentManagerImpl.kt b/platform/service-container/src/com/intellij/serviceContainer/ComponentManagerImpl.kt index 9e6fa721e926..7d38bf4f1161 100644 --- a/platform/service-container/src/com/intellij/serviceContainer/ComponentManagerImpl.kt +++ b/platform/service-container/src/com/intellij/serviceContainer/ComponentManagerImpl.kt @@ -689,7 +689,7 @@ abstract class ComponentManagerImpl( } catch (cde: ContainerDisposedException) { if (createIfNeeded) { - throwAlreadyDisposedIfNotUnderIndicatorOrJob(cause = cde) + throwAlreadyDisposedIfNotUnderIndicatorOrJob(serviceClass, cause = cde) throw ProcessCanceledException(cde) } else { @@ -707,7 +707,7 @@ abstract class ComponentManagerImpl( return null } } - rethrowCEasPCE { + rethrowCEasPCE(serviceClass) { // fast path holder.tryGetInstance()?.let { return it as T @@ -1566,7 +1566,7 @@ internal fun getOrCreateInstanceBlocking(holder: InstanceHolder, debugString: St // container scope might be canceled // => holder is initialized with CE // => caller should get PCE - rethrowCEasPCE { + rethrowCEasPCE(keyClass?:holder) { val instance = holder.tryGetInstance() if (instance != null) { return instance @@ -1600,7 +1600,7 @@ private fun doGetOrCreateInstanceBlocking(holder: InstanceHolder, keyClass: Clas } } catch (e: ProcessCanceledException) { - throwAlreadyDisposedIfNotUnderIndicatorOrJob(cause = e) + throwAlreadyDisposedIfNotUnderIndicatorOrJob(keyClass?:holder, cause = e) throw e } } @@ -1691,7 +1691,7 @@ private inline fun ignoreDisposal(x: () -> X): X? { } } -private inline fun rethrowCEasPCE(action: () -> X): X { +private inline fun rethrowCEasPCE(self: Any, action: () -> X): X { try { return action() } @@ -1699,15 +1699,15 @@ private inline fun rethrowCEasPCE(action: () -> X): X { throw e } catch (e: CancellationException) { - throwAlreadyDisposedIfNotUnderIndicatorOrJob(e) + throwAlreadyDisposedIfNotUnderIndicatorOrJob(self, e) throw CeProcessCanceledException(e) } } -private fun throwAlreadyDisposedIfNotUnderIndicatorOrJob(cause: Throwable) { +private fun throwAlreadyDisposedIfNotUnderIndicatorOrJob(self:Any, cause: Throwable) { if (!isUnderIndicatorOrJob()) { // in useInstanceContainer=false AlreadyDisposedException was thrown instead - throw AlreadyDisposedException("Container is already disposed").initCause(cause) + throw AlreadyDisposedException("Container $self is already disposed").initCause(cause) } }