[IR][Native] Decouple CacheDeserializationStrategy from KonanIrLinker ^KT-73754 Fixed
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt new file mode 100644 index 0000000..e5e5bf4 --- /dev/null +++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt
@@ -0,0 +1,44 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.konan + +import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.name.FqName + +class PartialCacheInfo(val klib: KotlinLibrary, val strategy: CacheDeserializationStrategy) + +sealed class CacheDeserializationStrategy { + abstract fun contains(filePath: String): Boolean + abstract fun contains(fqName: FqName, fileName: String): Boolean + + object Nothing : CacheDeserializationStrategy() { + override fun contains(filePath: String) = false + override fun contains(fqName: FqName, fileName: String) = false + } + + object WholeModule : CacheDeserializationStrategy() { + override fun contains(filePath: String) = true + override fun contains(fqName: FqName, fileName: String) = true + } + + class SingleFile(val filePath: String, val fqName: String) : CacheDeserializationStrategy() { + override fun contains(filePath: String) = filePath == this.filePath + + override fun contains(fqName: FqName, fileName: String) = + fqName.asString() == this.fqName && File(filePath).name == fileName + } + + class MultipleFiles(filePaths: List<String>, fqNames: List<String>) : CacheDeserializationStrategy() { + private val filePaths = filePaths.toSet() + + private val fqNamesWithNames = fqNames.mapIndexed { i: Int, fqName: String -> Pair(fqName, File(filePaths[i]).name) }.toSet() + + override fun contains(filePath: String) = filePath in filePaths + + override fun contains(fqName: FqName, fileName: String) = Pair(fqName.asString(), fileName) in fqNamesWithNames + } +}
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt index 2fa0886..b66c77a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.metadata.resolver.KotlinLibraryResolveResult -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite import org.jetbrains.kotlin.backend.common.serialization.proto.IrFile as ProtoFile @@ -44,40 +43,6 @@ } } -sealed class CacheDeserializationStrategy { - abstract fun contains(filePath: String): Boolean - abstract fun contains(fqName: FqName, fileName: String): Boolean - - object Nothing : CacheDeserializationStrategy() { - override fun contains(filePath: String) = false - override fun contains(fqName: FqName, fileName: String) = false - } - - object WholeModule : CacheDeserializationStrategy() { - override fun contains(filePath: String) = true - override fun contains(fqName: FqName, fileName: String) = true - } - - class SingleFile(val filePath: String, val fqName: String) : CacheDeserializationStrategy() { - override fun contains(filePath: String) = filePath == this.filePath - - override fun contains(fqName: FqName, fileName: String) = - fqName.asString() == this.fqName && File(filePath).name == fileName - } - - class MultipleFiles(filePaths: List<String>, fqNames: List<String>) : CacheDeserializationStrategy() { - private val filePaths = filePaths.toSet() - - private val fqNamesWithNames = fqNames.mapIndexed { i: Int, fqName: String -> Pair(fqName, File(filePaths[i]).name) }.toSet() - - override fun contains(filePath: String) = filePath in filePaths - - override fun contains(fqName: FqName, fileName: String) = Pair(fqName.asString(), fileName) in fqNamesWithNames - } -} - -class PartialCacheInfo(val klib: KotlinLibrary, val strategy: CacheDeserializationStrategy) - class CacheSupport( private val configuration: CompilerConfiguration, private val resolvedLibraries: KotlinLibraryResolveResult,