73799e2c3c
It's done with similar constructions where possible trying to preserve intended behavior. Some usages are removed because they test exactly the feature that we are going to drop soon.
29 lines
905 B
Kotlin
Vendored
29 lines
905 B
Kotlin
Vendored
package foo
|
|
|
|
fun Any.foo1(): () -> String {
|
|
return { "239" + this }
|
|
}
|
|
|
|
fun Int.foo2(): (i: Int) -> Int {
|
|
return { x -> x + this }
|
|
}
|
|
|
|
fun fooT1<T>(t: T) = { t.toString() }
|
|
|
|
fun fooT2<T>(t: T) = { x: T -> t.toString() + x.toString() }
|
|
|
|
fun box(): Any? {
|
|
if ( (10.foo1())() != "23910") return "foo1 fail"
|
|
if ( (10.foo2())(1) != 11 ) return "foo2 fail"
|
|
|
|
if (1.(fun Int.(): Int = this + 1)() != 2) return "test 3 failed";
|
|
if ( { 1 }() != 1) return "test 4 failed";
|
|
if ( { x: Int -> x }(1) != 1) return "test 5 failed";
|
|
if ( 1.(fun Int.(x: Int): Int = x + this)(1) != 2) return "test 6 failed";
|
|
val tmp = 1.(fun Int.(): Int = this)()
|
|
if (+tmp != 1) return "test 7 failed, res: $tmp ${tmp is Int}";
|
|
if ( (fooT1<String>("mama"))() != "mama") return "test 8 failed";
|
|
if ( (fooT2<String>("mama"))("papa") != "mamapapa") return "test 9 failed";
|
|
return "OK"
|
|
}
|