From 9e7ddfa191cb085f961b01f00af5e0d846dbe644 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 19 Feb 2024 19:05:48 +0100 Subject: [PATCH] [IR] Resolve fake overrides inside `getFunctionDeclaration` function #KT-64807 --- .../src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt index 65ecd6abecb..cd944f2e0c9 100644 --- a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt +++ b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt @@ -41,7 +41,9 @@ import org.jetbrains.kotlin.util.OperatorNameConventions abstract class InlineFunctionResolver { open fun getFunctionDeclaration(symbol: IrFunctionSymbol): IrFunction? { if (shouldExcludeFunctionFromInlining(symbol)) return null - return symbol.owner + + val owner = symbol.owner + return (owner as? IrSimpleFunction)?.resolveFakeOverride() ?: owner } protected open fun shouldExcludeFunctionFromInlining(symbol: IrFunctionSymbol): Boolean { @@ -108,8 +110,7 @@ class FunctionInlining( if (!callee.needsInlining) return expression - val target = (callee as? IrSimpleFunction)?.resolveFakeOverride() ?: callee - val actualCallee = inlineFunctionResolver.getFunctionDeclaration(target.symbol) + val actualCallee = inlineFunctionResolver.getFunctionDeclaration(callee.symbol) if (actualCallee?.body == null) { return expression }