Files
kotlin-fork/js/js.translator/testFiles/expression/misc/cases/functionExpression.kt
T
Pavel V. Talanov b883bf6ef5 Adopt more tests for functions from codegen tests.
Create test for KT-2565.
2012-07-31 18:51:13 +04:00

29 lines
859 B
Kotlin

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.{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.{Int.(x : Int) -> x + this}(1) != 2) return "test 6 failed";
val tmp = 1.({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"
}