From a8c6074c45b039be03e1933dddd0f9af97237b98 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Tue, 10 Oct 2023 14:37:19 +0300 Subject: [PATCH] [IR] Use InlineFunctionResolver for inlinable function references #KT-62313 Fixed --- .../common/lower/inline/FunctionInlining.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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,