From c2d556503d25af6d48e0e04a43f1c842c1194e16 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 4 May 2017 13:16:19 +0300 Subject: [PATCH] Fix bug in function inlining Fake overrides have IR now, so their declarations can be found by inliner but are fake and thus unusable. --- .../jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt index cd5301c052a..99e0295af8e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.backend.common.reportWarning import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.descriptors.isFunctionInvoke import org.jetbrains.kotlin.backend.konan.descriptors.needsInlining +import org.jetbrains.kotlin.backend.konan.descriptors.resolveFakeOverride import org.jetbrains.kotlin.backend.konan.ir.DeserializerDriver import org.jetbrains.kotlin.backend.konan.ir.IrReturnableBlockImpl import org.jetbrains.kotlin.descriptors.* @@ -77,7 +78,7 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoidW private fun getFunctionDeclaration(irCall: IrCall): IrFunction? { val functionDescriptor = irCall.descriptor as FunctionDescriptor - val originalDescriptor = functionDescriptor.original + val originalDescriptor = functionDescriptor.resolveFakeOverride().original val functionDeclaration = context.ir.originalModuleIndex.functions[originalDescriptor] ?: // If function is declared in the current module. deserializer.deserializeInlineBody(originalDescriptor) // Function is declared in another module.