JVM IR: Avoid direct invokes in callable reference tests

Due to the direct invoke optimization, most callable reference tests
were not generating callable references/lambdas.
This commit is contained in:
Steven Schäfer
2022-06-13 14:49:49 +02:00
committed by Alexander Udalov
parent f0238766df
commit 7d59c7689c
123 changed files with 216 additions and 208 deletions
@@ -13,8 +13,8 @@ fun B.test(): String {
if (foo()() != "##") return "fail3"
if (foo()(42) != "#42") return "fail4"
if ((foo())(42) != "#42") return "fail5"
if ({ -> A()}()() != "##") return "fail6"
if ({ -> A()}()(37) != "#37") return "fail7"
if ({ -> A()}.let { it() }() != "##") return "fail6"
if ({ -> A()}.let { it() }(37) != "#37") return "fail7"
return "OK"
}
@@ -14,7 +14,7 @@ fun box(): String {
if (foo()() != "##") return "fail3"
if (foo()(42) != "#42") return "fail4"
if ((foo())(42) != "#42") return "fail5"
if ({ -> A()}()() != "##") return "fail6"
if ({ -> A()}()(37) != "#37") return "fail7"
if ({ -> A()}.let { it() }() != "##") return "fail6"
if ({ -> A()}.let { it() }(37) != "#37") return "fail7"
return "OK"
}
+1 -1
View File
@@ -9,6 +9,6 @@ public class B(): A(){
public override fun method() : String {
return ({
super.method()
})()
}).let { it() }
}
}
@@ -3,7 +3,7 @@ fun outer() {
if (i > 0){
{
it: Int -> inner(0) // <- invocation of literal itself is generated instead
}.invoke(1)
}.let { it.invoke(1) }
}
}
inner(1)
@@ -14,7 +14,7 @@ fun box(): String {
{
foo(foo, 1)
foo("K")
} ()
}.let { it() }
}
return s