diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt index fd88caf3a18..8165c008eae 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt @@ -322,6 +322,10 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC val jsUndefined = getInternalFunction("jsUndefined") + val linkageErrorSymbol = getInternalFunction("throwLinkageError") + + // Helpers: + private fun getInternalFunction(name: String) = context.symbolTable.referenceSimpleFunction(context.getJsInternalFunction(name)) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/ExceptionHelperCallsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/ExceptionHelperCallsTransformer.kt index e3d98f3ce1d..94f43b4d33a 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/ExceptionHelperCallsTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/ExceptionHelperCallsTransformer.kt @@ -6,14 +6,15 @@ package org.jetbrains.kotlin.ir.backend.js.lower.calls import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext -import org.jetbrains.kotlin.ir.util.irCall import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression +import org.jetbrains.kotlin.ir.util.irCall import org.jetbrains.kotlin.ir.util.kotlinPackageFqn import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name class ExceptionHelperCallsTransformer(private val context: JsIrBackendContext) : CallsTransformer { + // TODO: move symbol resolve into context private fun referenceFunction(fqn: FqName) = context.getFunctions(fqn).singleOrNull()?.let { context.symbolTable.referenceSimpleFunction(it) @@ -24,7 +25,8 @@ class ExceptionHelperCallsTransformer(private val context: JsIrBackendContext) : context.irBuiltIns.throwCceSymbol to referenceFunction(kotlinPackageFqn.child(Name.identifier("THROW_CCE"))), context.irBuiltIns.throwIseSymbol to referenceFunction(kotlinPackageFqn.child(Name.identifier("THROW_ISE"))), context.irBuiltIns.illegalArgumentExceptionSymbol to referenceFunction(kotlinPackageFqn.child(Name.identifier("THROW_IAE"))), - context.irBuiltIns.noWhenBranchMatchedExceptionSymbol to referenceFunction(kotlinPackageFqn.child(Name.identifier("noWhenBranchMatchedException"))) + context.irBuiltIns.noWhenBranchMatchedExceptionSymbol to referenceFunction(kotlinPackageFqn.child(Name.identifier("noWhenBranchMatchedException"))), + context.irBuiltIns.linkageErrorSymbol to context.intrinsics.linkageErrorSymbol ) override fun transformFunctionAccess(call: IrFunctionAccessExpression, doNotIntrinsify: Boolean) =