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
@@ -17,7 +17,7 @@ class B(val o: String, val k: String) {
}
inline fun test(crossinline f: (String) -> Unit) {
testNested { it -> { f(it + k) }() }
testNested { it -> { f(it + k) }.let { it() } }
}
@@ -11,7 +11,7 @@ class A {
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
{
f(arg + addParam)
}()
}.let { it() }
}
fun box(): String {
@@ -21,12 +21,12 @@ class A {
{
{
result = param + c + a
}()
}()
}.let { it() }
}.let { it() }
}
}
}()
}.let { it() }
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
}
@@ -19,10 +19,10 @@ class A {
{
{
result = param + c + a
}()
}()
}.let { it() }
}.let { it() }
}
}()
}.let { it() }
}
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
@@ -11,7 +11,7 @@ class A {
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
{
f(arg + addParam)
}()
}.let { it() }
}
@@ -19,7 +19,7 @@ class A {
inlineFun("2") { a ->
{
result = param + a
}()
}.let { it() }
}
return if (result == "start2_additional_") "OK" else "fail: $result"
}
@@ -11,7 +11,7 @@ class A {
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
{
f(arg + addParam)
}()
}.let { it() }
}
@@ -20,9 +20,9 @@ class A {
inlineFun("2") { a ->
{
result = param + a
}()
}.let { it() }
}
}()
}.let { it() }
return if (result == "start2_additional_") "OK" else "fail: $result"
}
@@ -11,7 +11,7 @@ class A {
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
{
f(arg + addParam)
}()
}.let { it() }
}
fun box(): String {
@@ -21,10 +21,10 @@ class A {
{
{
result = param + c + a
}()
}()
}.let { it() }
}.let { it() }
}
}()
}.let { it() }
}
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
@@ -11,7 +11,7 @@ class A {
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
{
f(arg + addParam)
}()
}.let { it() }
}
fun box(): String {
@@ -20,9 +20,9 @@ class A {
inlineFun("2") { a ->
{
result = param + c + a
}()
}.let { it() }
}
}()
}.let { it() }
}
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
@@ -17,7 +17,7 @@ class B(val o: String, val k: String) {
}
inline fun test(crossinline f: (String) -> Unit) {
testNested { it -> { f(it + "K") }() }
testNested { it -> { f(it + "K") }.let { it() } }
}
}
@@ -18,7 +18,7 @@ class B(val o: String, val k: String) {
}
fun test(f: (String) -> Unit) {
testNested { it -> { f(it + k) }() }
testNested { it -> { f(it + k) }.let { it() } }
}
@@ -20,8 +20,8 @@ class B(val o: String, val k: String) {
inline fun test(crossinline f: (String) -> Unit) {
call {
{
testNested ({ it -> { f(it + o) }() }) { it -> { f(it + k) }() }
}()
testNested ({ it -> { f(it + o) }.let { it() } }) { it -> { f(it + k) }.let { it() } }
}.let { it() }
}
}
@@ -21,8 +21,8 @@ class B(val o: String, val k: String) {
call {
f("start");
{
testNested ({ it -> { f(it + o) }() }) { it -> { f(it + k) }() }
}()
testNested ({ it -> { f(it + o) }.let { it() } }) { it -> { f(it + k) }.let { it() } }
}.let { it() }
}
}