diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractInBlockModificationTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractInBlockModificationTest.kt index 5c3a503b323..386af0e8b2a 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractInBlockModificationTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractInBlockModificationTest.kt @@ -139,7 +139,7 @@ private fun doTestInBlockModification( * @return **true** if out-of-block happens */ private fun LLFirDeclarationModificationService.modifyElement(element: PsiElement): Boolean { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("${LLFirDeclarationModificationService::class.simpleName}.disposable") var isOutOfBlock = false try { project.analysisMessageBus.connect(disposable).subscribe( diff --git a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt index baa413de6ff..b3b3b3b5ed6 100644 --- a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt +++ b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt @@ -214,7 +214,7 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager } fun writeFilesOnDisk() { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for ${FilesWriter::class.qualifiedName}.writeFilesOnDisk") val environment = KotlinCoreEnvironment.createForTests( disposable, configuration.copy().apply { diff --git a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt index 87dc03b14d5..d7a523aab9e 100644 --- a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt @@ -46,7 +46,7 @@ class BuiltInsSerializer( dependOnOldBuiltIns: Boolean, onComplete: (totalSize: Int, totalFiles: Int) -> Unit ) { - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${BuiltInsSerializer::class.simpleName}.analyzeAndSerialize") val messageCollector = createMessageCollector() val performanceManager = object : CommonCompilerPerformanceManager(presentableName = "test") {} try { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt index b3a917da175..55a8cf36d99 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt @@ -97,7 +97,7 @@ abstract class CLICompiler : CLITool() { val canceledStatus = services[CompilationCanceledStatus::class.java] ProgressIndicatorAndCompilationCanceledStatus.setCompilationCanceledStatus(canceledStatus) - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${CLICompiler::class.simpleName}.execImpl") try { setIdeaIoUseFallback() diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt index 7fa57e5debe..c7877236afd 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt @@ -891,7 +891,7 @@ class CompileServiceImpl( if (compilationOptions.targetPlatform != CompileService.TargetPlatform.JVM) CompileService.CallResult.Error("Sorry, only JVM target platform is supported now") else { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for ${CompileServiceImpl::class.simpleName}.leaseReplSession") val messageCollector = CompileServicesFacadeMessageCollector(servicesFacade, compilationOptions) val repl = KotlinJvmReplService( disposable, port, compilerId, templateClasspath, templateClassName, diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt index b05ba40fa97..aa949733cbc 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt @@ -153,7 +153,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractFrontendModularizedTest() { } override fun processModule(moduleData: ModuleData): ProcessorAction { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for ${FirResolveModularizedTotalKotlinTest::class.simpleName}.processModule") val configuration = createDefaultConfiguration(moduleData) configureLanguageVersionSettings(configuration, moduleData, LanguageVersion.fromVersionString(LANGUAGE_VERSION_K2)!!) val environment = KotlinCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt index e6d1872b0b4..ff614a501dd 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt @@ -122,7 +122,7 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractFrontendModularizedTest( } override fun processModule(moduleData: ModuleData): ProcessorAction { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for ${NonFirResolveModularizedTotalKotlinTest::class.simpleName}.processModule") val environment = configureAndSetupEnvironment(moduleData, disposable) runAnalysis(environment) diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index c2b8ef0d732..817469f1fd8 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -100,7 +100,7 @@ open class IncrementalFirJvmCompilerRunner( val exitCode = ExitCode.OK val allCompiledSources = LinkedHashSet() - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${IncrementalFirJvmCompilerRunner::class.simpleName}.runCompiler") try { // - configuration diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt index b3686e8f3b3..afd32d8c683 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt @@ -107,7 +107,8 @@ open class IncrementalJvmCompilerRunner( psiFileFactory.createFileFromText(file.nameWithoutExtension, JavaLanguage.INSTANCE, file.readText()) private val psiFileFactory: PsiFileFactory by lazy { - val rootDisposable = Disposer.newDisposable() + val rootDisposable = + Disposer.newDisposable("Disposable for PSI file factory of ${IncrementalJvmCompilerRunner::class.simpleName}") val configuration = compilerConfiguration val environment = KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/parsing/parseFileUtils.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/parsing/parseFileUtils.kt index a86d94191f2..5edfbd4a27e 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/parsing/parseFileUtils.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/parsing/parseFileUtils.kt @@ -30,7 +30,7 @@ fun classesFqNames(files: Set): Set { val existingKotlinFiles = files.filter { it.name.endsWith(".kt", ignoreCase = true) && it.isFile } if (existingKotlinFiles.isEmpty()) return emptySet() - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for org.jetbrains.kotlin.incremental.parsing.classesFqNames") return try { classesFqNames(existingKotlinFiles, disposable) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/ApplicationEnvironmentDisposer.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/ApplicationEnvironmentDisposer.kt index 9574e4ef022..09ab01cb4f6 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/ApplicationEnvironmentDisposer.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/ApplicationEnvironmentDisposer.kt @@ -16,7 +16,7 @@ import java.lang.reflect.Field class ApplicationEnvironmentDisposer : TestExecutionListener { companion object { - val ROOT_DISPOSABLE: Disposable = Disposer.newDisposable() + val ROOT_DISPOSABLE: Disposable = Disposer.newDisposable("${ApplicationEnvironmentDisposer::class.simpleName}.ROOT_DISPOSABLE") } override fun testPlanExecutionFinished(testPlan: TestPlan) { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt index e6bc94f6a60..f281010ae7d 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt @@ -50,7 +50,7 @@ class TestConfigurationImpl( val originalBuilder: TestConfigurationBuilder.ReadOnlyBuilder ) : TestConfiguration(), TestService { - override val rootDisposable: Disposable = TestDisposable() + override val rootDisposable: Disposable = TestDisposable("${TestConfigurationImpl::class.simpleName}.rootDisposable") override val testServices: TestServices = TestServices() init { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/utils/TestDisposable.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/utils/TestDisposable.kt index 9baa7ebe252..bb5d9b187b6 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/utils/TestDisposable.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/utils/TestDisposable.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.test.utils import com.intellij.openapi.Disposable -class TestDisposable : Disposable { +class TestDisposable(val debugName: String) : Disposable { @Volatile var isDisposed = false private set @@ -15,4 +15,6 @@ class TestDisposable : Disposable { override fun dispose() { isDisposed = true } + + override fun toString(): String = debugName } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt index 36238dd88a8..73c76d1b790 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt @@ -46,7 +46,7 @@ object KlibTestUtil { configuration.put(CommonConfigurationKeys.MODULE_NAME, libraryName) configuration.addKotlinSourceRoots(sourceFiles.map { it.absolutePath }) - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${KlibTestUtil::class.simpleName}.compileCommonSourcesToKlib") val module = try { val environment = KotlinCoreEnvironment.createForTests( parentDisposable = rootDisposable, diff --git a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt index c2946009bbf..c19adb36e83 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt @@ -199,7 +199,7 @@ internal class TestRepl( ) : Closeable { val application = ApplicationManager.getApplication() - private val disposable: Disposable by lazy { Disposer.newDisposable() } + private val disposable: Disposable by lazy { Disposer.newDisposable("${TestRepl::class.simpleName}.disposable") } val emptyScriptArgs = ScriptArgsWithTypes(arrayOf(emptyArray()), arrayOf(Array::class)) diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/FastJarFSTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/FastJarFSTest.kt index 4c81e8227de..5ef2542157d 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/FastJarFSTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/FastJarFSTest.kt @@ -23,7 +23,7 @@ class FastJarFSTest : TestCase() { private var fs: FastJarFileSystem? = null private var coreAppEnv: JavaCoreApplicationEnvironment? = null - private val rootDisposable = Disposer.newDisposable() + private val rootDisposable = Disposer.newDisposable("${FastJarFSTest::class.simpleName}.rootDisposable") override fun setUp() { super.setUp() diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt index 1dfbcb3746c..19fbf540f31 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt @@ -72,7 +72,7 @@ class KotlinJavascriptSerializerTest : TestCaseWithTmpdir() { } private fun serialize(configuration: CompilerConfiguration, metaFile: File) { - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${KotlinJavascriptSerializerTest::class.simpleName}.serialize") try { val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES) val files = environment.getSourceFiles() diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt index d3135277e2a..d2082939cc9 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -82,7 +82,11 @@ abstract class AbstractInvalidationTest( private val zipAccessor = ZipFileSystemCacheableAccessor(2) protected val environment = - KotlinCoreEnvironment.createForParallelTests(TestDisposable(), CompilerConfiguration(), EnvironmentConfigFiles.JS_CONFIG_FILES) + KotlinCoreEnvironment.createForParallelTests( + TestDisposable("${AbstractInvalidationTest::class.simpleName}.rootDisposable"), + CompilerConfiguration(), + EnvironmentConfigFiles.JS_CONFIG_FILES, + ) @AfterEach protected fun clearZipAccessor() { diff --git a/libraries/tools/ide-plugin-dependencies-validator/src/org/jetbrains/kotlin/ide/plugin/dependencies/validator/ExperimentalOptInUsageInSourceChecker.kt b/libraries/tools/ide-plugin-dependencies-validator/src/org/jetbrains/kotlin/ide/plugin/dependencies/validator/ExperimentalOptInUsageInSourceChecker.kt index ec45d4748aa..03cfaeb8362 100644 --- a/libraries/tools/ide-plugin-dependencies-validator/src/org/jetbrains/kotlin/ide/plugin/dependencies/validator/ExperimentalOptInUsageInSourceChecker.kt +++ b/libraries/tools/ide-plugin-dependencies-validator/src/org/jetbrains/kotlin/ide/plugin/dependencies/validator/ExperimentalOptInUsageInSourceChecker.kt @@ -83,7 +83,7 @@ object ExperimentalOptInUsageInSourceChecker { private fun createProjectForParsing(): Project { return KotlinCoreEnvironment.createForProduction( - Disposer.newDisposable(), + Disposer.newDisposable("Disposable for project of ${ExperimentalOptInUsageInSourceChecker::class.simpleName}"), CompilerConfiguration(), EnvironmentConfigFiles.JVM_CONFIG_FILES ).project diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java index 95a187d6a38..307d01e56c7 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java @@ -163,7 +163,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo { private void executeScriptFile(File scriptFile) throws MojoExecutionException { initCompiler(); - Disposable rootDisposable = Disposer.newDisposable(); + Disposable rootDisposable = Disposer.newDisposable("Disposable for ExecuteKotlinScriptMojo.executeScriptFile"); try { MavenPluginLogMessageCollector messageCollector = new MavenPluginLogMessageCollector(getLog()); diff --git a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/AbstractObjCExportHeaderGeneratorTest.kt b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/AbstractObjCExportHeaderGeneratorTest.kt index f4e58b23c43..49b0303aa0f 100644 --- a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/AbstractObjCExportHeaderGeneratorTest.kt +++ b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/testUtils/AbstractObjCExportHeaderGeneratorTest.kt @@ -20,7 +20,7 @@ abstract class AbstractObjCExportHeaderGeneratorTest( fun generateHeaders(disposable: Disposable, root: File): String } - private val testRootDisposable = Disposer.newDisposable() + private val testRootDisposable = Disposer.newDisposable("${AbstractObjCExportHeaderGeneratorTest::class.simpleName}.testRootDisposable") protected val objCExportTestDataDir = testDataDir.resolve("objcexport") @After diff --git a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt index e9d0f5b1db2..d96d7dc3a77 100644 --- a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt +++ b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportMapperTest.kt @@ -31,7 +31,7 @@ import kotlin.test.assertNull * The test also acts as quick entry point for debugging the [ObjCExportMapper] */ class ObjCExportMapperTest : InlineSourceTestEnvironment { - override val testDisposable = Disposer.newDisposable() + override val testDisposable = Disposer.newDisposable("${ObjCExportMapperTest::class.simpleName}.testDisposable") override val kotlinCoreEnvironment: KotlinCoreEnvironment = createKotlinCoreEnvironment(testDisposable) @TempDir diff --git a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportNamerTest.kt b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportNamerTest.kt index 1deb129d445..cb5ad65a9a0 100644 --- a/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportNamerTest.kt +++ b/native/objcexport-header-generator/src/test/kotlin/org/jetbrains/kotlin/backend/konan/tests/ObjCExportNamerTest.kt @@ -35,7 +35,7 @@ import kotlin.test.assertEquals */ class ObjCExportNamerTest : InlineSourceTestEnvironment { - override val testDisposable = Disposer.newDisposable() + override val testDisposable = Disposer.newDisposable("${ObjCExportNamerTest::class.simpleName}.testDisposable") override val kotlinCoreEnvironment = createKotlinCoreEnvironment(testDisposable) diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/jvmCompilationUtil.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/jvmCompilationUtil.kt index b468bb4f77b..39fefba867f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/jvmCompilationUtil.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/jvmCompilationUtil.kt @@ -36,7 +36,7 @@ internal fun makeCompiledModule(generationState: GenerationState) = inline fun withMessageCollectorAndDisposable( script: SourceCode? = null, parentMessageCollector: MessageCollector? = null, - disposable: Disposable = Disposer.newDisposable(), + disposable: Disposable = Disposer.newDisposable("Default disposable for scripting compiler"), disposeOnSuccess: Boolean = true, body: (ScriptDiagnosticsMessageCollector, Disposable) -> ResultWithDiagnostics ): ResultWithDiagnostics { diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/GenericReplCompiler.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/GenericReplCompiler.kt index a6a573bd0b7..38d791f82eb 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/GenericReplCompiler.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/GenericReplCompiler.kt @@ -36,7 +36,12 @@ open class GenericReplCompiler( scriptDefinition: KotlinScriptDefinition, compilerConfiguration: CompilerConfiguration, messageCollector: MessageCollector - ) : this(Disposer.newDisposable(), scriptDefinition, compilerConfiguration, messageCollector) + ) : this( + Disposer.newDisposable("Default disposable for ${GenericReplCompiler::class.simpleName}"), + scriptDefinition, + compilerConfiguration, + messageCollector + ) private val checker = GenericReplChecker( diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/services/FirScriptDefinitionProviderService.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/services/FirScriptDefinitionProviderService.kt index 614c1362c40..45481e4906f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/services/FirScriptDefinitionProviderService.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/services/FirScriptDefinitionProviderService.kt @@ -59,7 +59,15 @@ class FirScriptDefinitionProviderService( val makeConfigurationProvider = configurationProvider?.let { { it } } ?: { // TODO: check if memory can leak in MockProject (probably not too important, since currently the providers are set externaly in important cases) - CliScriptDependenciesProvider(MockProject(null, Disposer.newDisposable())) + CliScriptDependenciesProvider( + MockProject( + null, + Disposer.newDisposable( + "Disposable for project of ${CliScriptDependenciesProvider::class.simpleName} created by" + + " ${FirScriptDefinitionProviderService::class.simpleName}" + ), + ), + ) } return Factory { session -> FirScriptDefinitionProviderService(session, makeDefinitionsProvider, makeConfigurationProvider) } diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt index 6cc70e7367c..714ed5f8b99 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt @@ -271,7 +271,7 @@ internal fun withTempDir(keyName: String = "tmp", body: (File) -> R): R { } internal fun withDisposable(body: (Disposable) -> R) { - val disposable = Disposer.newDisposable() + val disposable = Disposer.newDisposable("Disposable for scripting compiler tests") try { body(disposable) } finally { @@ -279,7 +279,7 @@ internal fun withDisposable(body: (Disposable) -> R) { } } -class TestDisposable : Disposable { +class TestDisposable(val debugName: String) : Disposable { @Volatile var isDisposed = false private set @@ -287,6 +287,8 @@ class TestDisposable : Disposable { override fun dispose() { isDisposed = true } + + override fun toString(): String = debugName } fun CompilerConfiguration.updateWithBaseCompilerArguments() { diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt index 2c8d5e367e3..eb0038bd7c4 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt @@ -28,7 +28,8 @@ private const val testDataPath = "plugins/scripting/scripting-compiler/testData/ class CollectScriptCompilationDependenciesTest : TestCase() { - protected val testRootDisposable: Disposable = TestDisposable() + protected val testRootDisposable: Disposable = + TestDisposable("${CollectScriptCompilationDependenciesTest::class.simpleName}.testRootDisposable") fun testCascadeImport() { runTest("imp_imp_leaf.req1.kts", listOf("imp_leaf.req1.kts", "leaf.req1.kts")) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt index cf4fe57c408..07f3fd9d6e6 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt @@ -34,7 +34,7 @@ import kotlin.script.experimental.util.filterByAnnotationType private const val testDataPath = "plugins/scripting/scripting-compiler/testData/compiler/compileTimeFibonacci" class CompileTimeFibonacciTest : TestCase() { - private val testRootDisposable: Disposable = TestDisposable() + private val testRootDisposable: Disposable = TestDisposable("${CompileTimeFibonacciTest::class.simpleName}.testRootDisposable") fun testFibonacciWithSupportedNumbersImplementsTheCorrectConstants() { val outputLines = runScript("supported.fib.kts") diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt index 2ef7faf8f33..a857d5d0fd9 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt @@ -40,7 +40,7 @@ private annotation class TestAnnotation(vararg val options: String) private annotation class AnnotationWithVarArgAndArray(vararg val options: String, val moreOptions: Array) class ConstructAnnotationTest : TestCase() { - private val testRootDisposable: Disposable = TestDisposable() + private val testRootDisposable: Disposable = TestDisposable("${ConstructAnnotationTest::class.simpleName}.testRootDisposable") fun testAnnotationEmptyVarArg() { val annotations = annotations("TestAnnotationEmptyVarArg.kts", TestAnnotation::class) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt index 1786bd81d0e..dc3f68a55e1 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt @@ -35,7 +35,7 @@ private const val testDataPath = "plugins/scripting/scripting-compiler/testData/ class ScriptCliCompilationTest : TestCase() { - protected val testRootDisposable: Disposable = TestDisposable() + protected val testRootDisposable: Disposable = TestDisposable("${ScriptCliCompilationTest::class.simpleName}.testRootDisposable") fun testPrerequisites() { Assert.assertTrue(thisClasspath.isNotEmpty()) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt index dcd275fc797..178a53ec411 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt @@ -362,7 +362,7 @@ class ScriptTemplateTest : TestCase() { messageCollector: MessageCollector, includeKotlinRuntime: Boolean ): Class<*>? { - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${ScriptTemplateTest::class.simpleName}") try { val additionalClasspath = System.getProperty("kotlin.test.script.classpath")?.split(File.pathSeparator) ?.mapNotNull { File(it).takeIf { file -> file.exists() } }.orEmpty().toTypedArray() diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt index de3f5943680..743a9302821 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt @@ -116,7 +116,7 @@ class ScriptTest : TestCase() { if (suppressOutput) MessageCollector.NONE else PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false) - val rootDisposable = Disposer.newDisposable() + val rootDisposable = Disposer.newDisposable("Disposable for ${ScriptTest::class.simpleName}") try { val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK) configuration.updateWithBaseCompilerArguments()