40 lines
995 B
Kotlin
Vendored
40 lines
995 B
Kotlin
Vendored
open class A(val value: String) {
|
|
inner class B(val s: String) {
|
|
val result = value + "_" + s
|
|
}
|
|
}
|
|
|
|
class C : A("fromC") {
|
|
fun classReceiver() = B("OK")
|
|
fun superReceiver() = super.B("OK")
|
|
|
|
fun newAReceiver() = A("fromA").B("OK")
|
|
fun aReceiver(): B {
|
|
val a = A("fromA")
|
|
return a.B("OK")
|
|
}
|
|
|
|
fun A.extReceiver() = this.B("OK")
|
|
fun extReceiver() = A("fromA").extReceiver()
|
|
}
|
|
|
|
fun box(): String {
|
|
val receiver = C()
|
|
var result = receiver.classReceiver().result
|
|
if (result != "fromC_OK") return "fail 1: $result"
|
|
|
|
result = receiver.superReceiver().result
|
|
if (result != "fromC_OK") return "fail 2: $result"
|
|
|
|
|
|
result = receiver.aReceiver().result
|
|
if (result != "fromA_OK") return "fail 3: $result"
|
|
|
|
result = receiver.newAReceiver().result
|
|
if (result != "fromA_OK") return "fail 3: $result"
|
|
|
|
result = receiver.extReceiver().result
|
|
if (result != "fromA_OK") return "fail 3: $result"
|
|
|
|
return "OK"
|
|
} |