ae608ea67f
This fixes missing `USED_AS_EXPRESSION` recordings ^KT-47527 Fixed
66 lines
4.4 KiB
Plaintext
Vendored
66 lines
4.4 KiB
Plaintext
Vendored
== fn ==
|
|
fun fn() : String? = null
|
|
---------------------
|
|
null <v0>: {<: String?} NEW: r(null) -> <v0>
|
|
=====================
|
|
== let ==
|
|
inline fun <T, R> T.let(f: (T) -> R): R = f(this)
|
|
---------------------
|
|
<v0>: {<: (T) -> R} NEW: magic[FAKE_INITIALIZER](f: (T) -> R) -> <v0>
|
|
f <v1>: {<: (T) -> R} NEW: r(f) -> <v1>
|
|
this <v2>: {<: T} COPY
|
|
this <v2>: {<: T} NEW: r(this, <this>) -> <v2>
|
|
f(this) <v3>: {<: R} NEW: call(f(this), invoke|<v1>, <v2>) -> <v3>
|
|
=====================
|
|
== foo ==
|
|
fun foo(): String {
|
|
val x = fn()?.let { throw Exception() } ?: "unreachable?"
|
|
return x
|
|
}
|
|
---------------------
|
|
fn() <v0>: String NEW: call(fn(), fn) -> <v0>
|
|
{ throw Exception() } <v1>: {<: (String) -> Nothing} NEW: r({ throw Exception() }) -> <v1>
|
|
let { throw Exception() } <v2>: AND{Boolean, String} NEW: call(let { throw Exception() }, let|<v0>, <v1>) -> <v2>
|
|
fn()?.let { throw Exception() } <v2>: AND{Boolean, String} COPY
|
|
"unreachable?" <v3>: String NEW: r("unreachable?") -> <v3>
|
|
fn()?.let { throw Exception() } ?: "unreachable?" <v4>: String NEW: merge(fn()?.let { throw Exception() } ?: "unreachable?"|<v2>, <v3>) -> <v4>
|
|
x <v5>: String NEW: r(x) -> <v5>
|
|
return x !<v6>: *
|
|
{ val x = fn()?.let { throw Exception() } ?: "unreachable?" return x } !<v6>: * COPY
|
|
=====================
|
|
== anonymous_0 ==
|
|
{ throw Exception() }
|
|
---------------------
|
|
Exception() <v0>: {<: Throwable} NEW: call(Exception(), <init>) -> <v0>
|
|
throw Exception() !<v1>: *
|
|
throw Exception() !<v1>: * COPY
|
|
=====================
|
|
== bar ==
|
|
fun bar(): String {
|
|
val x = fn() ?: return ""
|
|
val y = x?.let { throw Exception() } ?: "unreachable"
|
|
return y
|
|
}
|
|
---------------------
|
|
fn() <v0>: AND{Boolean, String} NEW: call(fn(), fn) -> <v0>
|
|
"" <v1>: String NEW: r("") -> <v1>
|
|
return "" !<v2>: *
|
|
fn() ?: return "" <v3>: String NEW: merge(fn() ?: return ""|<v0>, !<v2>) -> <v3>
|
|
x <v4>: String NEW: r(x) -> <v4>
|
|
{ throw Exception() } <v5>: {<: (String) -> Nothing} NEW: r({ throw Exception() }) -> <v5>
|
|
let { throw Exception() } <v6>: AND{Boolean, String} NEW: call(let { throw Exception() }, let|<v4>, <v5>) -> <v6>
|
|
x?.let { throw Exception() } <v6>: AND{Boolean, String} COPY
|
|
"unreachable" <v7>: String NEW: r("unreachable") -> <v7>
|
|
x?.let { throw Exception() } ?: "unreachable" <v8>: String NEW: merge(x?.let { throw Exception() } ?: "unreachable"|<v6>, <v7>) -> <v8>
|
|
y <v9>: String NEW: r(y) -> <v9>
|
|
return y !<v10>: *
|
|
{ val x = fn() ?: return "" val y = x?.let { throw Exception() } ?: "unreachable" return y } !<v10>: * COPY
|
|
=====================
|
|
== anonymous_1 ==
|
|
{ throw Exception() }
|
|
---------------------
|
|
Exception() <v0>: {<: Throwable} NEW: call(Exception(), <init>) -> <v0>
|
|
throw Exception() !<v1>: *
|
|
throw Exception() !<v1>: * COPY
|
|
=====================
|