38 lines
892 B
Kotlin
38 lines
892 B
Kotlin
package foo
|
|
|
|
open class A(val v: String) {
|
|
open fun m(i:Int, s:String): String = "A.m ${this.v} $i $s"
|
|
}
|
|
|
|
class B(v: String): A(v) {
|
|
override fun m(i:Int, s:String): String = "B.m ${this.v} $i $s"
|
|
}
|
|
|
|
native
|
|
fun bar(a: A, extLambda: A.(Int, String) -> String): String = noImpl
|
|
|
|
fun A.topLevelExt(i:Int, s:String): String = "A::topLevelExt ${this.v} $i $s"
|
|
|
|
fun box(): String {
|
|
val a = A("test")
|
|
|
|
var r = bar(a) { i, s -> "${this.v} $i $s"}
|
|
if (r != "test 4 boo") return r
|
|
|
|
fun A.LocalExt(i:Int, s:String): String = "A::LocalExt ${this.v} $i $s"
|
|
|
|
r = bar(a, A::topLevelExt)
|
|
if (r != "A::topLevelExt test 4 boo") return r
|
|
|
|
r = bar(a, A::LocalExt)
|
|
if (r != "A::LocalExt test 4 boo") return r
|
|
|
|
r = bar(a, A::m)
|
|
if (r != "A.m test 4 boo") return r
|
|
|
|
val b = B("test")
|
|
r = bar(b, A::m)
|
|
if (r != "B.m test 4 boo") return r
|
|
|
|
return "OK"
|
|
} |