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
@@ -1,14 +0,0 @@
class X {
val result: String
inline get() = "OK"
fun x(): String {
return go(::result)
}
}
inline fun go(f: () -> String): String = f()
fun box(): String {
return X().x()
}
@@ -1,5 +0,0 @@
inline fun foo(x: () -> String) = x()
fun String.id() = this
fun box() = foo("OK"::id)
@@ -1,8 +0,0 @@
inline fun go(f: () -> String) = f()
fun String.id(): String = this
fun box(): String {
val x = "OK"
return go(x::id)
}
@@ -0,0 +1,18 @@
// TARGET_BACKEND: JVM
// FILE: JClass.java
public class JClass {
public String field;
public JClass(String field){
this.field = field;
}
}
// FILE: main.kt
inline fun call(s: () -> String): String {
return s()
}
fun box(): String {
return call(JClass("OK")::field)
}