blob: 455f33473bc591540545fe678472e4fd5d783517 [file]
// TARGET_BACKEND: JVM_IR
// IGNORE_BACKEND_K1: ANY
// LANGUAGE: +ContextParameters
// WITH_STDLIB
// ISSUE: KT-76588
open class ParentA {
fun testA(x: String): String = "testA"
}
class ChildA: ParentA() {
@JvmName("ctxTestA")
context(_: String) fun testA(): String = "ctxTestA"
}
interface ParentB {
fun testB(x: String): String = "testB"
}
class ChildB: ParentB {
@JvmName("ctxTestB")
context(_: String) fun testB(): String = "ctxTestB"
}
interface ParentC {
fun testC(x: String): String
}
class ChildC: ParentC {
override fun testC(x: String): String = "testC"
@JvmName("ctxTestC")
context(_: String) fun testC(): String = "ctxTestC"
}
class ChildD {
@JvmName("ctxTestD")
context(_: String) fun testD(): String = "ctxTestD"
}
fun box(): String {
ChildA().testA("").let { result -> if (result != "testA") return "NOT OK: testA() == $result" }
ChildB().testB("").let { result -> if (result != "testB") return "NOT OK: testB() == $result" }
ChildC().testC("").let { result -> if (result != "testC") return "NOT OK: testC() == $result" }
with("") {
ChildA().testA().let { result -> if (result != "ctxTestA") return "NOT OK: ctxTestA() == $result" }
ChildB().testB().let { result -> if (result != "ctxTestB") return "NOT OK: ctxTestB() == $result" }
ChildC().testC().let { result -> if (result != "ctxTestC") return "NOT OK: ctxTestC() == $result" }
ChildD().testD().let { result -> if (result != "ctxTestD") return "NOT OK: ctxTestD() == $result" }
}
return "OK"
}