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.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))
}
})
}
@@ -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()