JVM IR: fix value argument offset in -Xjvm-default=compatibility mode

This commit is contained in:
Alexander Udalov
2019-12-03 10:45:45 +01:00
parent 3de6289c6c
commit d84daa0a4b
2 changed files with 9 additions and 4 deletions
@@ -17,7 +17,10 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.declarations.* 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.expressions.impl.*
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
@@ -218,7 +221,7 @@ internal class InterfaceLowering(val context: JvmBackendContext) : IrElementTran
offset += 1 offset += 1
} }
for (i in offset until valueParameters.size) { 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))
} }
}) })
} }
@@ -5,8 +5,10 @@
// WITH_RUNTIME // WITH_RUNTIME
interface A { interface A {
@JvmDefault @JvmDefault
fun String.foo() = "OK" fun String.foo(k: String) = "O" + k
} }
fun box(): String = fun box(): String =
object : A { fun box() = "FAIL".foo() }.box() object : A {
fun box() = "FAIL".foo("K")
}.box()