From d84daa0a4b0b473d1153974b6649d21d26db157c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 3 Dec 2019 10:45:45 +0100 Subject: [PATCH] JVM IR: fix value argument offset in -Xjvm-default=compatibility mode --- .../kotlin/backend/jvm/lower/InterfaceLowering.kt | 7 +++++-- .../box/jvm8/defaults/compatibility/interfaceExtension.kt | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InterfaceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InterfaceLowering.kt index 79a34051628..be34d816b69 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InterfaceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InterfaceLowering.kt @@ -17,7 +17,10 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.expressions.IrCall +import org.jetbrains.kotlin.ir.expressions.IrExpression +import org.jetbrains.kotlin.ir.expressions.IrFunctionReference +import org.jetbrains.kotlin.ir.expressions.IrReturn import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol @@ -218,7 +221,7 @@ internal class InterfaceLowering(val context: JvmBackendContext) : IrElementTran offset += 1 } for (i in offset until valueParameters.size) { - call.putValueArgument(i - 1, IrGetValueImpl(startOffset, endOffset, valueParameters[i].symbol)) + call.putValueArgument(i - offset, IrGetValueImpl(startOffset, endOffset, valueParameters[i].symbol)) } }) } diff --git a/compiler/testData/codegen/box/jvm8/defaults/compatibility/interfaceExtension.kt b/compiler/testData/codegen/box/jvm8/defaults/compatibility/interfaceExtension.kt index 72a6660b7da..ceb229c0131 100644 --- a/compiler/testData/codegen/box/jvm8/defaults/compatibility/interfaceExtension.kt +++ b/compiler/testData/codegen/box/jvm8/defaults/compatibility/interfaceExtension.kt @@ -5,8 +5,10 @@ // WITH_RUNTIME interface A { @JvmDefault - fun String.foo() = "OK" + fun String.foo(k: String) = "O" + k } fun box(): String = - object : A { fun box() = "FAIL".foo() }.box() + object : A { + fun box() = "FAIL".foo("K") + }.box()