Enable implicit integer coercion for Kotlin/Native interop libraries

This commit is contained in:
Svyatoslav Scherbina
2018-08-29 18:52:36 +03:00
committed by Mikhail Glukhikh
parent 2161451482
commit b86afb0bab
2 changed files with 12 additions and 1 deletions
@@ -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)!!
@@ -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(