FIR: Support coercion-to-unit semantics for callable references

This commit is contained in:
Denis Zharkov
2020-05-15 16:21:31 +03:00
parent 61def4cdc5
commit e1e149a062
13 changed files with 64 additions and 27 deletions
@@ -0,0 +1,9 @@
public fun <T> T.myAlso(block: (T) -> Unit): T = TODO()
class B {
fun add(x: String): Boolean = true
}
fun main(b: B) {
"".myAlso(b::add)
}
@@ -0,0 +1,17 @@
FILE: coercionToUnit.kt
public final fun <T> R|T|.myAlso(block: R|(T) -> kotlin/Unit|): R|T| {
^myAlso R|kotlin/TODO|()
}
public final class B : R|kotlin/Any| {
public constructor(): R|B| {
super<R|kotlin/Any|>()
}
public final fun add(x: R|kotlin/String|): R|kotlin/Boolean| {
^add Boolean(true)
}
}
public final fun main(b: R|B|): R|kotlin/Unit| {
String().R|/myAlso|<R|kotlin/String|>(R|<local>/b|::R|/B.add|)
}