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 d9d6c176519..57f3379f3f7 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 @@ -284,7 +284,7 @@ class FunctionInlining( return when { functionArgument is IrFunctionReference -> - inlineFunctionReference(expression, functionArgument, functionArgument.symbol.owner) + inlineFunctionReference(expression, functionArgument, functionArgument.symbol) functionArgument is IrPropertyReference && functionArgument.field != null -> inlineField(expression, functionArgument) @@ -382,6 +382,20 @@ class FunctionInlining( ) } + fun inlineFunctionReference( + irCall: IrCall, + irFunctionReference: IrFunctionReference, + inlinedFunctionSymbol: IrFunctionSymbol, + ): IrExpression { + val inlinedFunction = inlinedFunctionSymbol.owner + return inlineFunctionReference( + irCall, irFunctionReference, + if (inlinedFunction.needsInlining) + inlineFunctionResolver.getFunctionDeclaration(inlinedFunction.symbol) + else inlinedFunction + ) + } + fun inlineFunctionReference( irCall: IrCall, irFunctionReference: IrFunctionReference,