[FE 1.0] Always create return value for CallInstruction

This fixes missing `USED_AS_EXPRESSION` recordings
^KT-47527 Fixed
This commit is contained in:
Dmitriy Novozhilov
2021-06-30 16:40:55 +03:00
committed by TeamCityServer
parent b2372ff0b9
commit ae608ea67f
50 changed files with 496 additions and 204 deletions
+48
View File
@@ -0,0 +1,48 @@
fun test_1(value: Any?): String? {
return { // BLOCK
val tmp0_safe_receiver: Any? = value
when {
EQEQ(arg0 = tmp0_safe_receiver, arg1 = null) -> null
else -> tmp0_safe_receiver.let<Any, Nothing>(block = local fun <anonymous>(it: Any): Nothing {
return "O"
}
)
}
}
}
fun test_2(value: Any?): String? {
return run<Nothing?>(block = local fun <anonymous>(): Nothing? {
return { // BLOCK
val tmp0_safe_receiver: Any? = value
when {
EQEQ(arg0 = tmp0_safe_receiver, arg1 = null) -> null
else -> tmp0_safe_receiver.let<Any, Nothing>(block = local fun <anonymous>(it: Any): Nothing {
return "K"
}
)
}
}
}
)
}
fun box(): String {
var result: String = ""
result = result.plus(other = { // BLOCK
val tmp0_elvis_lhs: String? = test_1(value = 1)
when {
EQEQ(arg0 = tmp0_elvis_lhs, arg1 = null) -> return "fail 1"
else -> tmp0_elvis_lhs
}
})
result = result.plus(other = { // BLOCK
val tmp1_elvis_lhs: String? = test_2(value = 1)
when {
EQEQ(arg0 = tmp1_elvis_lhs, arg1 = null) -> return "fail 2"
else -> tmp1_elvis_lhs
}
})
return result
}