Support bound callable reference inlining in IR

This commit is contained in:
Mikhael Bogdanov
2019-05-28 15:44:51 +02:00
parent 3c093f321d
commit 81e6416bfe
28 changed files with 461 additions and 180 deletions
@@ -0,0 +1,31 @@
// IGNORE_BACKEND: JS_IR
// FILE: 1.kt
package test
class Foo(val a: String) {
fun test() = a
}
inline fun test(a: String, b: () -> String, c: () -> String, d: String): String {
return a + b() + c() + d
}
// FILE: 2.kt
import test.*
var effects = ""
fun create(a: String): Foo {
effects += a
return Foo(a)
}
fun box(): String {
val result = test(create("A").a, create("B")::a, create("C")::test, create("D").a)
if (result != effects) return "fail 1: $effects != $result"
return if (result == "ABCD") "OK" else "fail 2: $result"
}