JVM IR: Avoid direct lambda invokes in inline tests
This commit is contained in:
committed by
Alexander Udalov
parent
f0760e0550
commit
2acfb3a41f
@@ -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
@@ -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.*
|
||||
|
||||
@@ -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
@@ -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
@@ -6,7 +6,7 @@ import kotlin.reflect.KClass
|
||||
|
||||
inline fun <reified T : Any> injectFnc(): KClass<T> = {
|
||||
T::class
|
||||
} ()
|
||||
}.let { it() }
|
||||
|
||||
public class Box
|
||||
|
||||
|
||||
Reference in New Issue
Block a user