diff --git a/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt b/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt index e97b1e5a8e6..f1c4baac626 100644 --- a/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt +++ b/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt @@ -5,11 +5,15 @@ package org.jetbrains.kotlin.buildtools.internal +import com.intellij.openapi.vfs.impl.ZipHandler +import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS import org.jetbrains.kotlin.build.report.DoNothingBuildReporter import org.jetbrains.kotlin.build.report.metrics.DoNothingBuildMetricsReporter import org.jetbrains.kotlin.buildtools.api.* -import org.jetbrains.kotlin.buildtools.api.jvm.* +import org.jetbrains.kotlin.buildtools.api.jvm.ClassSnapshotGranularity +import org.jetbrains.kotlin.buildtools.api.jvm.ClasspathSnapshotBasedIncrementalCompilationApproachParameters +import org.jetbrains.kotlin.buildtools.api.jvm.JvmCompilationConfiguration import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments import org.jetbrains.kotlin.cli.common.arguments.validateArguments @@ -17,13 +21,14 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler +import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem import org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunnerUtils import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.client.BasicCompilerServicesWithResultsFacadeServer import org.jetbrains.kotlin.daemon.common.CompilerId import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions import org.jetbrains.kotlin.daemon.common.filterExtractProps -import org.jetbrains.kotlin.incremental.ClasspathChanges import org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner import org.jetbrains.kotlin.incremental.classpathDiff.ClasspathEntrySnapshotter import org.jetbrains.kotlin.incremental.extractKotlinSourcesFromFreeCompilerArguments @@ -85,10 +90,20 @@ internal object CompilationServiceImpl : CompilationService { } override fun finishProjectCompilation(projectId: ProjectId) { + clearJarCaches() val file = buildIdToSessionFlagFile.remove(projectId) ?: return file.delete() } + private fun clearJarCaches() { + ZipHandler.clearFileAccessorCache() + KotlinCoreEnvironment.applicationEnvironment?.apply { + (jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache() + (jrtFileSystem as? CoreJrtFileSystem)?.clearRoots() + idleCleanup() + } + } + override fun getCustomKotlinScriptFilenameExtensions(classpath: List): Collection { val definitions = ScriptDefinitionsFromClasspathDiscoverySource( classpath,