33 lines
660 B
Kotlin
Vendored
33 lines
660 B
Kotlin
Vendored
// !LANGUAGE: +ContextReceivers
|
|
// TARGET_BACKEND: JVM_IR
|
|
// WITH_STDLIB
|
|
|
|
class A(val ok: String)
|
|
|
|
context(A)
|
|
class B(oValue: Boolean = true, kValue: Boolean = true) {
|
|
var o: Boolean
|
|
var k: Boolean
|
|
|
|
init {
|
|
o = oValue
|
|
k = kValue
|
|
}
|
|
|
|
constructor(oValue: String, kValue: String) : this(oValue == "O", kValue == "K")
|
|
|
|
fun result() = if (o && k) ok else "fail"
|
|
}
|
|
|
|
fun box(): String {
|
|
val a = A("OK")
|
|
with (a) {
|
|
val results = listOf(
|
|
B(true, true).result(),
|
|
B("O", "K").result(),
|
|
B().result()
|
|
)
|
|
return if (results.all { it == "OK" }) "OK" else "fail"
|
|
}
|
|
}
|