From 2e05d1ba18cf89a5d6d0efe65f844aef09316fed Mon Sep 17 00:00:00 2001 From: Alex Plate Date: Mon, 23 Dec 2019 17:09:55 +0300 Subject: [PATCH] [Workspace model] Dispose modifiable model without libraries to remove GitOrigin-RevId: 84abeee4291685ddfa755705aa3896cef211472e --- .../intellij/LegacyBridgeModifiableRootModel.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/intellij/LegacyBridgeModifiableRootModel.kt b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/intellij/LegacyBridgeModifiableRootModel.kt index 1536fe7a37ad..627f1e5381b1 100644 --- a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/intellij/LegacyBridgeModifiableRootModel.kt +++ b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/intellij/LegacyBridgeModifiableRootModel.kt @@ -340,7 +340,7 @@ class LegacyBridgeModifiableRootModel( LegacyBridgeModuleRootComponent.getInstance(module).newModuleLibraries.addAll(moduleLibraryTable.librariesToAdd) // Do not clear `librariesToAdd`. Otherwise `getLibraries()` will return an empty list after the commit - dispose() + disposeSkippingLibraries() val moduleDiff = module.diff @@ -365,6 +365,15 @@ class LegacyBridgeModifiableRootModel( modelIsCommittedOrDisposed = true } + private fun disposeSkippingLibraries() { + if (!modelIsCommittedOrDisposed) { + Disposer.dispose(extensionsDisposable) + } + + // No assertions here since it is ok to call dispose twice or more + modelIsCommittedOrDisposed = true + } + override fun getModuleLibraryTable(): LibraryTable = moduleLibraryTable override fun setSdk(jdk: Sdk?) {