mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
55 lines
910 B
Kotlin
Vendored
55 lines
910 B
Kotlin
Vendored
// FILE: 1.kt
|
|
|
|
package test
|
|
|
|
interface Run {
|
|
fun run(): String
|
|
}
|
|
|
|
inline fun i2(crossinline s: () -> String): Run {
|
|
return i1 {
|
|
object : Run {
|
|
override fun run(): String {
|
|
return s()
|
|
}
|
|
}.run()
|
|
}
|
|
}
|
|
|
|
inline fun i1(crossinline s: () -> String): Run {
|
|
return object : Run {
|
|
override fun run(): String {
|
|
return s()
|
|
}
|
|
}
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
|
|
import test.*
|
|
|
|
inline fun i4(crossinline s: () -> String): Run {
|
|
return i3 {
|
|
object : Run {
|
|
override fun run(): String {
|
|
return s()
|
|
}
|
|
}.run()
|
|
}
|
|
}
|
|
|
|
inline fun i3(crossinline s: () -> String): Run {
|
|
return i2 {
|
|
object : Run {
|
|
override fun run(): String {
|
|
return s()
|
|
}
|
|
}.run()
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
val i4 = i4 { "OK" }
|
|
return i4.run()
|
|
}
|