diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt index 23066600e67..b5c310e0e40 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt @@ -321,13 +321,13 @@ internal class KonanSymbols( } val arrayContentToString = arrayToExtensionSymbolMap("contentToString") { - lookup.isExtensionReceiverNullable(it) == false + lookup.isExtensionReceiverNullable(it) == true } val arrayContentHashCode = arrayToExtensionSymbolMap("contentHashCode") { - lookup.isExtensionReceiverNullable(it) == false + lookup.isExtensionReceiverNullable(it) == true } val arrayContentEquals = arrayToExtensionSymbolMap("contentEquals") { - lookup.isExtensionReceiverNullable(it) == false + lookup.isExtensionReceiverNullable(it) == true } override val arraysContentEquals by lazy { arrayContentEquals.mapKeys { it.key.defaultType } } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DataClassOperatorsLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DataClassOperatorsLowering.kt index 599ec5c1469..93dbddbf53b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DataClassOperatorsLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DataClassOperatorsLowering.kt @@ -6,17 +6,15 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.common.lower.at import org.jetbrains.kotlin.backend.common.lower.createIrBuilder -import org.jetbrains.kotlin.backend.common.lower.irBlock import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.ir.IrStatement -import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.types.classifierOrFail -import org.jetbrains.kotlin.ir.types.isNullable import org.jetbrains.kotlin.ir.util.irCall import org.jetbrains.kotlin.ir.visitors.IrElementTransformer @@ -56,24 +54,8 @@ internal class DataClassOperatorsLowering(val context: Context) : FileLoweringPa // TODO: use more precise type arguments. val typeArguments = (0 until newCallee.typeParameters.size).map { irBuiltins.anyNType } - if (!argument.type.isNullable()) { - irCall(newCallee, typeArguments).apply { - extensionReceiver = argument - } - } else { - irBlock(argument) { - val tmp = irTemporary(argument) - val call = irCall(newCallee, typeArguments).apply { - extensionReceiver = irGet(tmp) - } - +irIfThenElse(call.type, - irEqeqeq(irGet(tmp), irNull()), - if (isToString) - irString("null") - else - irInt(0), - call) - } + irCall(newCallee, typeArguments).apply { + extensionReceiver = argument } } }