diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt index f70e6300ec1..366df39eea1 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropCallConvertors.kt @@ -97,13 +97,13 @@ private fun InteropCallContext.findMemoryAccessFunction(isRead: Boolean, valueTy .findAnnotation(RuntimeNames.typedIntrinsicAnnotation) ?.getAnnotationStringValue() annotationArgument == requiredType.name - }.first { + }.firstOrNull { if (isRead) { it.returnType.classOrNull == valueType.classOrNull } else { it.valueParameters.last().type.classOrNull == valueType.classOrNull } - } + } ?: error("No memory access function for ${valueType.classOrNull?.owner?.name}") } private fun InteropCallContext.readValueFromMemory( @@ -164,7 +164,8 @@ private fun InteropCallContext.castPrimitiveIfNeeded( targetClass == irBuiltIns.booleanClass -> castToBoolean(sourceClass, value) sourceClass == irBuiltIns.booleanClass -> castFromBoolean(targetClass, value) else -> { - val conversion = symbols.integerConversions.getValue(sourceClass to targetClass) + val conversion = symbols.integerConversions[sourceClass to targetClass] + ?: error("There is no conversion from ${sourceClass.owner.name} to ${targetClass.owner.name}") builder.irCall(conversion.owner).apply { if (conversion.owner.dispatchReceiverParameter != null) { dispatchReceiver = value