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
@@ -7,11 +7,11 @@ class A {
|
||||
val aMemberProperty: Int get() = 42.also { result += "A.amp," }
|
||||
|
||||
fun test(): String {
|
||||
(::memberFunction)()
|
||||
(::aExtensionFunction)()
|
||||
(::memberFunction).let { it() }
|
||||
(::aExtensionFunction).let { it() }
|
||||
|
||||
(::memberProperty)()
|
||||
(::aExtensionProperty)()
|
||||
(::memberProperty).let { it() }
|
||||
(::aExtensionProperty).let { it() }
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -21,17 +21,17 @@ class A {
|
||||
val memberProperty: Int get() = 42.also { result += "B.mp," }
|
||||
|
||||
fun test(): String {
|
||||
(::aMemberFunction)()
|
||||
(::aExtensionFunction)()
|
||||
(::aMemberFunction).let { it() }
|
||||
(::aExtensionFunction).let { it() }
|
||||
|
||||
(::aMemberProperty)()
|
||||
(::aExtensionProperty)()
|
||||
(::aMemberProperty).let { it() }
|
||||
(::aExtensionProperty).let { it() }
|
||||
|
||||
(::memberFunction)()
|
||||
(::memberProperty)()
|
||||
(::memberFunction).let { it() }
|
||||
(::memberProperty).let { it() }
|
||||
|
||||
(::bExtensionFunction)()
|
||||
(::bExtensionProperty)()
|
||||
(::bExtensionFunction).let { it() }
|
||||
(::bExtensionProperty).let { it() }
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -53,28 +53,28 @@ fun box(): String {
|
||||
|
||||
result = ""
|
||||
with(A()) {
|
||||
(::memberFunction)()
|
||||
(::aExtensionFunction)()
|
||||
(::memberFunction).let { it() }
|
||||
(::aExtensionFunction).let { it() }
|
||||
|
||||
(::memberProperty)()
|
||||
(::aExtensionProperty)()
|
||||
(::memberProperty).let { it() }
|
||||
(::aExtensionProperty).let { it() }
|
||||
}
|
||||
if (result != "A.mf,A.ef,A.mp,A.ep,") return "Fail $result"
|
||||
|
||||
result = ""
|
||||
with(A()) {
|
||||
with(B()) {
|
||||
(::aMemberFunction)()
|
||||
(::aExtensionFunction)()
|
||||
(::aMemberFunction).let { it() }
|
||||
(::aExtensionFunction).let { it() }
|
||||
|
||||
(::aMemberProperty)()
|
||||
(::aExtensionProperty)()
|
||||
(::aMemberProperty).let { it() }
|
||||
(::aExtensionProperty).let { it() }
|
||||
|
||||
(::memberFunction)()
|
||||
(::memberProperty)()
|
||||
(::memberFunction).let { it() }
|
||||
(::memberProperty).let { it() }
|
||||
|
||||
(::bExtensionFunction)()
|
||||
(::bExtensionProperty)()
|
||||
(::bExtensionFunction).let { it() }
|
||||
(::bExtensionProperty).let { it() }
|
||||
}
|
||||
}
|
||||
if (result != "A.amf,A.ef,A.amp,A.ep,B.mf,B.mp,B.ef,B.ep,") return "Fail $result"
|
||||
|
||||
Reference in New Issue
Block a user