[JS IR] Fix native invoke checker

This commit is contained in:
Roman Artemev
2020-02-26 17:08:45 +03:00
committed by romanart
parent 9e1c52f8cb
commit f8d155c6a3
@@ -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)
}