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()