JVM_IR wrap function into a proxy if indy SAM-conversion becomes valid

This commit is contained in:
Dmitry Petrov
2021-10-06 18:53:29 +03:00
committed by teamcityserver
parent 9ad62eb1fd
commit 40fe67880b
21 changed files with 583 additions and 66 deletions
@@ -6,22 +6,13 @@
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 java/lang/invoke/LambdaMetafactory
// FILE: inlineOnly.kt
inline fun <reified T> f(x: T) =
println("${T::class.simpleName}($x)")
private inline fun g(x: String) = println(x)
fun call(c: Consumer<String>) = c.accept("")
fun box(): String {
call(::println) // `println` is `@InlineOnly`
call(::f) // `f` has a reified type parameter and thus isn't callable directly
val obj = { call(::g) } // `g` is inaccessible in this scope
obj()
call(::println) // 'println' is @InlineOnly
return "OK"
}