[Native] Replace KonanIrModuleFragmentImpl with IrModuleFragmentImpl
This commit is contained in:
+2
-2
@@ -216,7 +216,7 @@ internal fun PsiToIrContext.psiToIr(
|
|||||||
environment.getSourceFiles(),
|
environment.getSourceFiles(),
|
||||||
irProviders = listOf(irDeserializer),
|
irProviders = listOf(irDeserializer),
|
||||||
linkerExtensions = pluginExtensions,
|
linkerExtensions = pluginExtensions,
|
||||||
).toKonanModule()
|
)
|
||||||
|
|
||||||
irDeserializer.postProcess(inOrAfterLinkageStep = true)
|
irDeserializer.postProcess(inOrAfterLinkageStep = true)
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ internal fun PsiToIrContext.psiToIr(
|
|||||||
|
|
||||||
mainModule.files.forEach { it.metadata = KonanFileMetadataSource(mainModule) }
|
mainModule.files.forEach { it.metadata = KonanFileMetadataSource(mainModule) }
|
||||||
modules.values.forEach { module ->
|
modules.values.forEach { module ->
|
||||||
module.files.forEach { it.metadata = KonanFileMetadataSource(module as KonanIrModuleFragmentImpl) }
|
module.files.forEach { it.metadata = KonanFileMetadataSource(module) }
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (isProducingLibrary) {
|
return if (isProducingLibrary) {
|
||||||
|
|||||||
+2
-3
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.konan.descriptors.isFromInteropLibrary
|
|||||||
import org.jetbrains.kotlin.backend.konan.descriptors.isInteropLibrary
|
import org.jetbrains.kotlin.backend.konan.descriptors.isInteropLibrary
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.KonanMetadata
|
import org.jetbrains.kotlin.backend.konan.llvm.KonanMetadata
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanFileMetadataSource
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanFileMetadataSource
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanIrModuleFragmentImpl
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
@@ -100,8 +99,8 @@ private fun IrClass.getOverridingOf(function: IrFunction) = (function as? IrSimp
|
|||||||
}
|
}
|
||||||
|
|
||||||
val ModuleDescriptor.konanLibrary get() = (this.klibModuleOrigin as? DeserializedKlibModuleOrigin)?.library
|
val ModuleDescriptor.konanLibrary get() = (this.klibModuleOrigin as? DeserializedKlibModuleOrigin)?.library
|
||||||
val IrModuleFragment.konanLibrary
|
val IrModuleFragment.konanLibrary get() = descriptor.konanLibrary
|
||||||
get() = (this as? KonanIrModuleFragmentImpl)?.konanLibrary ?: descriptor.konanLibrary
|
|
||||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||||
val IrPackageFragment.konanLibrary : KotlinLibrary?
|
val IrPackageFragment.konanLibrary : KotlinLibrary?
|
||||||
get() {
|
get() {
|
||||||
|
|||||||
+5
-31
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
|
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl
|
||||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
@@ -594,7 +595,7 @@ internal class KonanIrLinker(
|
|||||||
else DeserializationStrategy.ON_DEMAND
|
else DeserializationStrategy.ON_DEMAND
|
||||||
}, klib.versions.abiVersion ?: KotlinAbiVersion.CURRENT, containsErrorCode
|
}, klib.versions.abiVersion ?: KotlinAbiVersion.CURRENT, containsErrorCode
|
||||||
) {
|
) {
|
||||||
override val moduleFragment: IrModuleFragment = KonanIrModuleFragmentImpl(moduleDescriptor, builtIns)
|
override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns)
|
||||||
|
|
||||||
val files by lazy { fileDeserializationStates.map { it.file } }
|
val files by lazy { fileDeserializationStates.map { it.file } }
|
||||||
|
|
||||||
@@ -1091,7 +1092,7 @@ internal class KonanIrLinker(
|
|||||||
|
|
||||||
override fun deserializedSymbolNotFound(idSig: IdSignature): Nothing = error("No descriptor found for $idSig")
|
override fun deserializedSymbolNotFound(idSig: IdSignature): Nothing = error("No descriptor found for $idSig")
|
||||||
|
|
||||||
override val moduleFragment: IrModuleFragment = KonanIrModuleFragmentImpl(moduleDescriptor, builtIns)
|
override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns)
|
||||||
override val moduleDependencies: Collection<IrModuleDeserializer> = listOfNotNull(forwardDeclarationDeserializer)
|
override val moduleDependencies: Collection<IrModuleDeserializer> = listOfNotNull(forwardDeclarationDeserializer)
|
||||||
|
|
||||||
override val kind get() = IrModuleDeserializerKind.DESERIALIZED
|
override val kind get() = IrModuleDeserializerKind.DESERIALIZED
|
||||||
@@ -1143,7 +1144,7 @@ internal class KonanIrLinker(
|
|||||||
|
|
||||||
override fun deserializedSymbolNotFound(idSig: IdSignature): Nothing = error("No descriptor found for $idSig")
|
override fun deserializedSymbolNotFound(idSig: IdSignature): Nothing = error("No descriptor found for $idSig")
|
||||||
|
|
||||||
override val moduleFragment: IrModuleFragment = KonanIrModuleFragmentImpl(moduleDescriptor, builtIns)
|
override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns)
|
||||||
override val moduleDependencies: Collection<IrModuleDeserializer> = emptyList()
|
override val moduleDependencies: Collection<IrModuleDeserializer> = emptyList()
|
||||||
|
|
||||||
override val kind get() = IrModuleDeserializerKind.SYNTHETIC
|
override val kind get() = IrModuleDeserializerKind.SYNTHETIC
|
||||||
@@ -1162,34 +1163,7 @@ internal class KonanIrLinker(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KonanIrModuleFragmentImpl(
|
class KonanFileMetadataSource(val module: IrModuleFragment) : MetadataSource.File {
|
||||||
override val descriptor: ModuleDescriptor,
|
|
||||||
override val irBuiltins: IrBuiltIns,
|
|
||||||
files: List<IrFile> = emptyList(),
|
|
||||||
) : IrModuleFragment() {
|
|
||||||
override val name: Name get() = descriptor.name // TODO
|
|
||||||
|
|
||||||
override val files: MutableList<IrFile> = files.toMutableList()
|
|
||||||
|
|
||||||
val konanLibrary = (descriptor.klibModuleOrigin as? DeserializedKlibModuleOrigin)?.library
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
|
||||||
visitor.visitModuleFragment(this, data)
|
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
|
||||||
files.forEach { it.accept(visitor, data) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
|
||||||
files.forEachIndexed { i, irFile ->
|
|
||||||
files[i] = irFile.transform(transformer, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun IrModuleFragment.toKonanModule() = KonanIrModuleFragmentImpl(descriptor, irBuiltins, files)
|
|
||||||
|
|
||||||
class KonanFileMetadataSource(val module: KonanIrModuleFragmentImpl) : MetadataSource.File {
|
|
||||||
override val name: Name? = null
|
override val name: Name? = null
|
||||||
override var serializedIr: ByteArray? = null
|
override var serializedIr: ByteArray? = null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user