Refactor JS translator to generate code for new inliner

This commit is contained in:
Alexey Andreev
2017-06-27 18:55:34 +03:00
parent 29857e48c8
commit 7c421b0b83
37 changed files with 771 additions and 211 deletions
@@ -0,0 +1,14 @@
// MODULE: lib
// FILE: lib.kt
object O {
fun bar() = "OK"
}
inline fun foo() = O.bar()
// MODULE: main(lib)
// FILE: main.kt
// CHECK_CONTAINS_NO_CALLS: box except=bar
fun box() = foo()
@@ -0,0 +1,21 @@
// MODULE: lib
// FILE: lib.kt
fun baz(x: String) = "($x)"
inline fun foo(): String {
return baz(bar { "OK" })
}
inline fun bar(noinline x: () -> String): String {
return "[" + baz(boo { x() }) + "]"
}
fun boo(x: () -> String) = x()
// MODULE: main(lib)
// FILE: main.kt
fun box(): String {
val result = foo()
if (result != "([(OK)])") return "fail: $result"
return "OK"
}
@@ -0,0 +1,31 @@
// MODULE: lib1
// FILE: lib1.kt
package lib1
fun foo() = "lib1"
inline fun bar1() = foo()
// MODULE: lib2
// FILE: lib2.kt
package lib2
fun foo() = "lib2"
inline fun bar2() = foo()
// MODULE: main(lib1, lib2)
// FILE: main.kt
import lib1.bar1
import lib2.bar2
fun box(): String {
val a = bar1()
if (a != "lib1") return "fail1: $a"
val b = bar2()
if (b != "lib2") return "fail2: $b"
return "OK"
}