diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt index 39c66b7937b..29614c507f0 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt @@ -62,12 +62,11 @@ fun translateFunction(declaration: IrFunction, name: JsName?, context: JsGenerat return function } -private fun isNativeInvoke(call: IrCall): Boolean { +private fun isNativeInvoke(receiver: JsExpression?, call: IrCall): Boolean { + if (receiver == null || receiver is JsThisRef) return false val simpleFunction = call.symbol.owner as? IrSimpleFunction ?: return false val receiverType = simpleFunction.dispatchReceiverParameter?.type ?: return false - if (simpleFunction.isSuspend) return false - if (call.origin === InteropCallableReferenceLowering.Companion.EXPLICIT_INVOKE) return false return simpleFunction.name == OperatorNameConventions.INVOKE && receiverType.isFunctionTypeOrSubtype() @@ -105,7 +104,7 @@ fun translateCall( } } - if (isNativeInvoke(expression)) { + if (isNativeInvoke(jsDispatchReceiver, expression)) { return JsInvocation(jsDispatchReceiver!!, arguments) }