[JS IR] Fix file name clashes during JS BE invalidation
This commit is contained in:
committed by
Space Team
parent
73bf7fa506
commit
ec71fe20e2
+15
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.common.serialization.*
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
@@ -18,6 +19,7 @@ import org.jetbrains.kotlin.library.IrLibrary
|
||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.containsErrorCode
|
||||
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
||||
|
||||
class JsIrLinker(
|
||||
private val currentModule: ModuleDescriptor?, messageLogger: IrMessageLogger, builtIns: IrBuiltIns, symbolTable: SymbolTable,
|
||||
@@ -67,8 +69,16 @@ class JsIrLinker(
|
||||
}
|
||||
}
|
||||
|
||||
private val deserializedFilesInKlibOrder = mutableMapOf<IrModuleFragment, List<IrFile>>()
|
||||
|
||||
private inner class JsModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: IrLibrary, strategyResolver: (String) -> DeserializationStrategy, libraryAbiVersion: KotlinAbiVersion, allowErrorCode: Boolean) :
|
||||
BasicIrModuleDeserializer(this, moduleDescriptor, klib, strategyResolver, libraryAbiVersion, allowErrorCode, false)
|
||||
BasicIrModuleDeserializer(this, moduleDescriptor, klib, strategyResolver, libraryAbiVersion, allowErrorCode, true) {
|
||||
|
||||
override fun init(delegate: IrModuleDeserializer) {
|
||||
super.init(delegate)
|
||||
deserializedFilesInKlibOrder[moduleFragment] = fileDeserializationStates.memoryOptimizedMap { it.file }
|
||||
}
|
||||
}
|
||||
|
||||
override fun createCurrentModuleDeserializer(moduleFragment: IrModuleFragment, dependencies: Collection<IrModuleDeserializer>): IrModuleDeserializer {
|
||||
val currentModuleDeserializer = super.createCurrentModuleDeserializer(moduleFragment, dependencies)
|
||||
@@ -91,6 +101,10 @@ class JsIrLinker(
|
||||
return deserializersForModules[moduleDescriptor.name.asString()] ?: error("Deserializer for $moduleDescriptor not found")
|
||||
}
|
||||
|
||||
fun getDeserializedFilesInKlibOrder(fragment: IrModuleFragment): List<IrFile> {
|
||||
return deserializedFilesInKlibOrder[fragment] ?: emptyList()
|
||||
}
|
||||
|
||||
class JsFePluginContext(
|
||||
override val moduleDescriptor: ModuleDescriptor,
|
||||
override val symbolTable: ReferenceSymbolTable,
|
||||
|
||||
Reference in New Issue
Block a user