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 8dcd5de3b59..c86fa2096b7 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 @@ -232,6 +232,7 @@ internal class KonanSymbols( override val throwNullPointerException = internalFunction("ThrowNullPointerException") val throwNoWhenBranchMatchedException = internalFunction("ThrowNoWhenBranchMatchedException") + val throwIrLinkageError = internalFunction("ThrowIrLinkageError") override val throwTypeCastException = internalFunction("ThrowTypeCastException") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BuiltinOperatorLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BuiltinOperatorLowering.kt index 1eff73ea203..deca3431492 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BuiltinOperatorLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BuiltinOperatorLowering.kt @@ -57,6 +57,15 @@ internal class BuiltinOperatorLowering(val context: Context) : FileLoweringPass, context.ir.symbols.throwNoWhenBranchMatchedException.owner.typeParameters.size, context.ir.symbols.throwNoWhenBranchMatchedException.owner.valueParameters.size) + irBuiltins.linkageErrorSymbol -> { + val newExpression = IrCallImpl.fromSymbolOwner( + expression.startOffset, expression.endOffset, + context.ir.symbols.throwIrLinkageError + ) + newExpression.putValueArgument(0, expression.getValueArgument(0)) // error message + newExpression + } + else -> expression } } diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/RuntimeUtils.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/RuntimeUtils.kt index 558b479be8b..1f827611e16 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/RuntimeUtils.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/RuntimeUtils.kt @@ -112,6 +112,13 @@ internal fun ThrowFileFailedToInitializeException() { throw FileFailedToInitializeException("There was an error during file initialization") } +internal class IrLinkageError(message: String?) : Error(message) + +@PublishedApi +internal fun ThrowIrLinkageError(message: String?): Nothing { + throw IrLinkageError(message) +} + @ExportForCppRuntime internal fun PrintThrowable(throwable: Throwable) { println(throwable)