diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/GradleIncrementalCacheImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/GradleIncrementalCacheImpl.kt index 46de0c5114d..5b40ce385f2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/GradleIncrementalCacheImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/GradleIncrementalCacheImpl.kt @@ -16,10 +16,18 @@ package org.jetbrains.kotlin.incremental +import org.jetbrains.kotlin.build.GeneratedJvmClass import org.jetbrains.kotlin.gradle.plugin.kotlinDebug +import org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff +import org.jetbrains.kotlin.incremental.snapshots.FileSnapshotMap +import org.jetbrains.kotlin.incremental.snapshots.SimpleFileSnapshotProviderImpl +import org.jetbrains.kotlin.incremental.storage.BasicStringMap +import org.jetbrains.kotlin.incremental.storage.PathStringDescriptor +import org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer +import org.jetbrains.kotlin.modules.TargetId import java.io.File -internal class GradleIncrementalCacheImpl(targetDataRoot: java.io.File, targetOutputDir: java.io.File?, target: org.jetbrains.kotlin.modules.TargetId) : org.jetbrains.kotlin.incremental.IncrementalCacheImpl(targetDataRoot, targetOutputDir, target) { +internal class GradleIncrementalCacheImpl(targetDataRoot: File, targetOutputDir: File?, target: TargetId) : IncrementalCacheImpl(targetDataRoot, targetOutputDir, target) { companion object { private val SOURCES_TO_CLASSFILES = "sources-to-classfiles" private val FILE_SNAPSHOT = "file-snapshot" @@ -27,26 +35,26 @@ internal class GradleIncrementalCacheImpl(targetDataRoot: java.io.File, targetOu private val log = org.gradle.api.logging.Logging.getLogger(this.javaClass) - private val sourceToClassfilesMap = registerMap(SourceToClassfilesMap(org.jetbrains.kotlin.incremental.GradleIncrementalCacheImpl.Companion.SOURCES_TO_CLASSFILES.storageFile)) - private val fileSnapshotMap = registerMap(org.jetbrains.kotlin.incremental.snapshots.FileSnapshotMap(FILE_SNAPSHOT.storageFile)) + private val sourceToClassfilesMap = registerMap(SourceToClassfilesMap(GradleIncrementalCacheImpl.Companion.SOURCES_TO_CLASSFILES.storageFile)) + private val fileSnapshotMap = registerMap(FileSnapshotMap(FILE_SNAPSHOT.storageFile)) - fun compareAndUpdateFileSnapshots(files: Iterable): org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff = - fileSnapshotMap.compareAndUpdate(files, org.jetbrains.kotlin.incremental.snapshots.SimpleFileSnapshotProviderImpl()) + fun compareAndUpdateFileSnapshots(files: Iterable): FileCollectionDiff = + fileSnapshotMap.compareAndUpdate(files, SimpleFileSnapshotProviderImpl()) - fun removeClassfilesBySources(sources: Iterable): Unit = + fun removeClassfilesBySources(sources: Iterable): Unit = sources.forEach { sourceToClassfilesMap.remove(it) } - override fun saveFileToCache(generatedClass: org.jetbrains.kotlin.build.GeneratedJvmClass): org.jetbrains.kotlin.incremental.CompilationResult { + override fun saveFileToCache(generatedClass: GeneratedJvmClass): CompilationResult { generatedClass.sourceFiles.forEach { sourceToClassfilesMap.add(it, generatedClass.outputFile) } return super.saveFileToCache(generatedClass) } - inner class SourceToClassfilesMap(storageFile: java.io.File) : org.jetbrains.kotlin.incremental.storage.BasicStringMap>(storageFile, org.jetbrains.kotlin.incremental.storage.PathStringDescriptor, org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer) { - fun add(sourceFile: java.io.File, classFile: java.io.File) { + inner class SourceToClassfilesMap(storageFile: File) : BasicStringMap>(storageFile, PathStringDescriptor, StringCollectionExternalizer) { + fun add(sourceFile: File, classFile: File) { storage.append(sourceFile.absolutePath, classFile.absolutePath) } - operator fun get(sourceFile: java.io.File): Collection = + operator fun get(sourceFile: File): Collection = storage[sourceFile.absolutePath].orEmpty().map(::File) override fun dumpValue(value: Collection) = value.dumpCollection()