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:
committed by
Alexander Udalov
parent
f0238766df
commit
7d59c7689c
@@ -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
@@ -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)
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ fun box(): String {
|
||||
{
|
||||
foo(foo, 1)
|
||||
foo("K")
|
||||
} ()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return s
|
||||
|
||||
Reference in New Issue
Block a user