Implement function literals in JS BE

This commit is contained in:
Roman Artemev
2018-04-04 14:09:51 +03:00
parent c83ff5e75f
commit ed0c26ef07
26 changed files with 650 additions and 157 deletions
@@ -2,14 +2,42 @@
import kotlin.test.assertEquals
inline fun foo(x: String, block: (String) -> String) = block(x)
fun run(r: () -> Any) = r()
fun test(i: Int, j: Int, k: Int): String {
var i = 0
var j = 2
val k = 4
fun f(): String = "OK"
val funVal = {
println(k)
}
run(funVal)
val funLit = { i += 1
j += k
f() }
val ret = run(funLit) as String
if (i != 1 || j != 6 || k != 4) return "fail"
return ret
}
fun box(): String {
fun bar(y: String) = y + "cde"
val res = foo("abc") { bar(it) }
assertEquals("abccde", res)
return "OK"
return test(1, 2, 3)
}
//fun box(): String {
//// fun bar(y: String) = y + "cde"
//
//// val res = foo("abc") { bar(it) }
//
//// assertEquals("abccde", res)
//
// return "OK"
//}