JVM_IR KT-45103 optimize direct invoke for lambdas and callable refs

This commit is contained in:
Dmitry Petrov
2021-04-26 17:17:25 +03:00
committed by teamcityserver
parent bfb1a06f3d
commit 851980e36f
124 changed files with 1340 additions and 324 deletions
@@ -3,12 +3,14 @@
import kotlin.reflect.*
fun <T> eval(fn: () -> T) = fn()
object E
operator fun E.getValue(receiver: Any?, property: KProperty<*>): String =
if (property.returnType.classifier == String::class) "OK" else "Fail"
fun box(): String = {
fun box(): String = eval {
val x: String by E
x
}()
}
@@ -3,10 +3,8 @@ import kotlin.reflect.KProperty
operator fun Int.provideDelegate(thiz: Any?, property: KProperty<*>): String = property.name
inline operator fun String.getValue(thiz: Any?, property: KProperty<*>): String = property.name
fun box(): String = with(42) {
val O by this
O
} + {
val K by ""
K
}()
fun <T> eval(fn: () -> T) = fn()
fun box(): String =
with(42) { val O by this; O } + eval { val K by ""; K }