diff --git a/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt b/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt index 2723bbd7f52..ff98790bc16 100644 --- a/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt +++ b/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.descriptors.konan import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.konan.library.KonanLibrary +import org.jetbrains.kotlin.konan.library.isInterop sealed class KonanModuleOrigin { @@ -23,4 +24,9 @@ object CurrentKonanModuleOrigin: CompiledKonanModuleOrigin() object SyntheticModulesOrigin : KonanModuleOrigin() +internal fun KonanModuleOrigin.isInteropLibrary(): Boolean = when (this) { + is DeserializedKonanModuleOrigin -> this.library.isInterop + CurrentKonanModuleOrigin, SyntheticModulesOrigin -> false +} + val ModuleDescriptor.konanModuleOrigin get() = this.getCapability(KonanModuleOrigin.CAPABILITY)!! diff --git a/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt b/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt index 30cd3ccc454..c945bf0a313 100644 --- a/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt +++ b/konan/serializer/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt @@ -11,7 +11,9 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.konan.KonanModuleDescriptorFactory import org.jetbrains.kotlin.descriptors.konan.KonanModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.isInteropLibrary import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion import org.jetbrains.kotlin.storage.StorageManager internal object KonanModuleDescriptorFactoryImpl : KonanModuleDescriptorFactory { @@ -26,7 +28,10 @@ internal object KonanModuleDescriptorFactoryImpl : KonanModuleDescriptorFactory name, storageManager, builtIns, - capabilities = customCapabilities + mapOf(KonanModuleOrigin.CAPABILITY to origin) + capabilities = customCapabilities + mapOf( + KonanModuleOrigin.CAPABILITY to origin, + ImplicitIntegerCoercion.MODULE_CAPABILITY to origin.isInteropLibrary() + ) ) override fun createDescriptorAndNewBuiltIns(