Test framework for inline
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
fun test1(): String {
|
||||
val inlineX = My()
|
||||
var d = "";
|
||||
inlineX.doWork({(z: String) -> d = z; z})
|
||||
return d
|
||||
}
|
||||
|
||||
fun test2(): Int {
|
||||
val inlineX = My()
|
||||
return inlineX.perform({(z: My) -> 11})
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (test1() != "OK") return "test1: ${test1()}"
|
||||
if (test2() != 11) return "test1: ${test2()}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
class My
|
||||
|
||||
inline fun <T, R> T.perform(job: (T)-> R) : R {
|
||||
return job(this)
|
||||
}
|
||||
|
||||
|
||||
inline fun My.someWork(job: (String) -> Any): Unit {
|
||||
this.perform {
|
||||
job("OK")
|
||||
}
|
||||
}
|
||||
|
||||
inline fun My.doWork (closure : (param : String) -> Unit) : Unit {
|
||||
this.someWork(closure)
|
||||
}
|
||||
|
||||
inline fun My.doPerform (closure : (param : My) -> Int) : Int {
|
||||
return perform(closure)
|
||||
}
|
||||
Reference in New Issue
Block a user