JVM IR: Avoid direct lambda invokes in inline tests

This commit is contained in:
Steven Schäfer
2022-06-13 15:13:04 +02:00
committed by Alexander Udalov
parent f0760e0550
commit 2acfb3a41f
117 changed files with 211 additions and 210 deletions
@@ -5,7 +5,7 @@
// FILE: 1.kt
package test
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::class.java.simpleName }.let { it() } }): String {
return lambda()
}
@@ -4,10 +4,10 @@
// FILE: 1.kt
package test
inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = { { p + T::class.java.simpleName }.let { it() } }): String {
return {
lambda()
} ()
}.let { it() }
}
// FILE: 2.kt
@@ -4,10 +4,10 @@
// FILE: 1.kt
package test
inline fun <reified T> inlineFun(crossinline lambda: () -> String = { { T::class.java.simpleName } () }): String {
inline fun <reified T> inlineFun(crossinline lambda: () -> String = { { T::class.java.simpleName }.let { it() } }): String {
return {
lambda()
} ()
}.let { it() }
}
// FILE: 2.kt
@@ -5,7 +5,7 @@
// FILE: 1.kt
package test
inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simpleName } () }): String {
inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simpleName }.let { it() } }): String {
return lambda()
}
+2 -2
View File
@@ -1,9 +1,9 @@
// FILE: 1.kt
package test
inline fun foo(crossinline x: () -> String) = { x() }()
inline fun foo(crossinline x: () -> String) = { x() }.let { it() }
inline fun <reified T> bar() = foo { { T::class.simpleName!! }() }
inline fun <reified T> bar() = foo { { T::class.simpleName!! }.let { it() } }
// FILE: 2.kt
import test.*
+1 -1
View File
@@ -3,7 +3,7 @@ package test
inline fun foo(x: () -> String) = x()
inline fun <reified T> bar() = { foo { { T::class.simpleName!! }() } }()
inline fun <reified T> bar() = { foo { { T::class.simpleName!! }.let { it() } } }.let { it() }
// FILE: 2.kt
import test.*
+1 -1
View File
@@ -10,7 +10,7 @@ public inline fun <reified T : Any> inlineMeIfYouCan(): String? =
f {
T::class.java.getName()
}
}()
}.let { it() }
inline fun f(x: () -> String) = x()
+1 -1
View File
@@ -6,7 +6,7 @@ import kotlin.reflect.KClass
inline fun <reified T : Any> injectFnc(): KClass<T> = {
T::class
} ()
}.let { it() }
public class Box