[KLIB] Provide required API for IC invalidation
This commit is contained in:
committed by
TeamCityServer
parent
4ad2572085
commit
76690c081a
+7
@@ -142,6 +142,13 @@ abstract class BasicIrModuleDeserializer(
|
||||
override fun deserializeReachableDeclarations() {
|
||||
moduleDeserializationState.deserializeReachableDeclarations()
|
||||
}
|
||||
|
||||
override fun signatureDeserializerForFile(fileName: String): IdSignatureDeserializer {
|
||||
val fileDeserializer = fileToDeserializerMap.entries.find { it.key.fileEntry.name == fileName }?.value
|
||||
?: error("No file deserializer for $fileName")
|
||||
|
||||
return fileDeserializer.symbolDeserializer.signatureDeserializer
|
||||
}
|
||||
}
|
||||
|
||||
private class ModuleDeserializationState(val linker: KotlinIrLinker, val moduleDeserializer: BasicIrModuleDeserializer) {
|
||||
|
||||
+6
@@ -92,6 +92,8 @@ abstract class IrModuleDeserializer(val moduleDescriptor: ModuleDescriptor, val
|
||||
open fun fileDeserializers(): Collection<IrFileDeserializer> = error("Unsupported")
|
||||
|
||||
val compatibilityMode: CompatibilityMode get() = CompatibilityMode(libraryAbiVersion)
|
||||
|
||||
open fun signatureDeserializerForFile(fileName: String): IdSignatureDeserializer = error("Unsupported")
|
||||
}
|
||||
|
||||
// Used to resolve built in symbols like `kotlin.ir.internal.*` or `kotlin.FunctionN`
|
||||
@@ -231,6 +233,10 @@ class IrModuleDeserializerWithBuiltIns(
|
||||
override fun postProcess() {
|
||||
delegate.postProcess()
|
||||
}
|
||||
|
||||
override fun signatureDeserializerForFile(fileName: String): IdSignatureDeserializer {
|
||||
return delegate.signatureDeserializerForFile(fileName)
|
||||
}
|
||||
}
|
||||
|
||||
open class CurrentModuleDeserializer(
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ class IrSymbolDeserializer(
|
||||
}
|
||||
}
|
||||
|
||||
private val signatureDeserializer = IdSignatureDeserializer(fileReader, fileSymbol)
|
||||
val signatureDeserializer = IdSignatureDeserializer(fileReader, fileSymbol)
|
||||
|
||||
fun deserializeIdSignature(index: Int): IdSignature {
|
||||
return signatureDeserializer.deserializeIdSignature(index)
|
||||
|
||||
+5
@@ -323,6 +323,11 @@ abstract class KotlinIrLinker(
|
||||
|
||||
fun deserializeHeadersWithInlineBodies(moduleDescriptor: ModuleDescriptor, kotlinLibrary: KotlinLibrary): IrModuleFragment =
|
||||
deserializeIrModuleHeader(moduleDescriptor, kotlinLibrary, DeserializationStrategy.WITH_INLINE_BODIES)
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun deserializeDirtyFiles(moduleDescriptor: ModuleDescriptor, kotlinLibrary: KotlinLibrary, dirtyFiles: Collection<String>): IrModuleFragment {
|
||||
return deserializeFullModule(moduleDescriptor, kotlinLibrary)
|
||||
}
|
||||
}
|
||||
|
||||
enum class DeserializationStrategy(
|
||||
|
||||
@@ -96,7 +96,7 @@ private val CompilerConfiguration.expectActualLinker: Boolean
|
||||
|
||||
class KotlinFileSerializedData(val metadata: ByteArray, val irData: SerializedIrFile)
|
||||
|
||||
private fun IrMessageLogger?.toResolverLogger(): Logger {
|
||||
fun IrMessageLogger?.toResolverLogger(): Logger {
|
||||
if (this == null) return DummyLogger
|
||||
|
||||
return object : Logger {
|
||||
|
||||
Reference in New Issue
Block a user