From 5b3d6583affb98dc6ecf142b382932709735c6d1 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Fri, 10 Mar 2023 12:09:58 +0100 Subject: [PATCH] Change `isLambdaCall` logic in `FunctionInlining` We are allowing to inline `KFunction` invoke call. This is needed for JVM paired with K2 compiler. Probably this can be reverted after #KT-57249 fix. --- .../kotlin/backend/common/lower/inline/FunctionInlining.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index bd3c298d560..24b2ca31ec8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -519,9 +519,10 @@ class FunctionInlining( private fun isLambdaCall(irCall: IrCall): Boolean { val callee = irCall.symbol.owner val dispatchReceiver = callee.dispatchReceiverParameter ?: return false - assert(!dispatchReceiver.type.isKFunction()) + // Uncomment or delete depending on KT-57249 status +// assert(!dispatchReceiver.type.isKFunction()) - return (dispatchReceiver.type.isFunction() || dispatchReceiver.type.isSuspendFunction()) + return (dispatchReceiver.type.isFunctionOrKFunction() || dispatchReceiver.type.isSuspendFunctionOrKFunction()) && callee.name == OperatorNameConventions.INVOKE && irCall.dispatchReceiver?.unwrapAdditionalImplicitCastsIfNeeded() is IrGetValue }