[FE 1.0] Always create return value for CallInstruction
This fixes missing `USED_AS_EXPRESSION` recordings ^KT-47527 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
b2372ff0b9
commit
ae608ea67f
@@ -52,7 +52,7 @@ L0:
|
||||
mark({ if (flag) { s.add(it) } else { s.remove(it) } return true })
|
||||
r({ if (flag) { s.add(it) } else { s.remove(it) } return true }) -> <v3>
|
||||
mark(let { if (flag) { s.add(it) } else { s.remove(it) } return true })
|
||||
call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>)
|
||||
call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>) -> <v4>
|
||||
L4 [before inlined declaration]:
|
||||
inlined({ if (flag) { s.add(it) } else { s.remove(it) } return true }) NEXT:[<SINK>]
|
||||
L3 [result of call]:
|
||||
|
||||
@@ -28,8 +28,8 @@ fun test(name: String?, flag: Boolean): Boolean {
|
||||
<v1>: Boolean NEW: magic[FAKE_INITIALIZER](flag: Boolean) -> <v1>
|
||||
name <v2>: String NEW: r(name) -> <v2>
|
||||
{ if (flag) { s.add(it) } else { s.remove(it) } return true } <v3>: {<: (String) -> Nothing} NEW: r({ if (flag) { s.add(it) } else { s.remove(it) } return true }) -> <v3>
|
||||
let { if (flag) { s.add(it) } else { s.remove(it) } return true } !<v4>: *
|
||||
name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } !<v4>: * COPY
|
||||
let { if (flag) { s.add(it) } else { s.remove(it) } return true } <v4>: * NEW: call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>) -> <v4>
|
||||
name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } <v4>: * COPY
|
||||
false <v5>: Boolean NEW: r(false) -> <v5>
|
||||
return false !<v6>: *
|
||||
{ name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } return false } !<v6>: * COPY
|
||||
|
||||
@@ -55,9 +55,9 @@ L0:
|
||||
L4 [after local declaration]:
|
||||
r({ if (flag) { s.add(it) } else { s.remove(it) } return true }) -> <v3> PREV:[jmp?(L4)]
|
||||
mark(let { if (flag) { s.add(it) } else { s.remove(it) } return true })
|
||||
call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>)
|
||||
call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>) -> <v4>
|
||||
L3 [result of call]:
|
||||
jmp?(L2) NEXT:[mark({ name?.hashCode() }), r(false) -> <v5>] PREV:[jf(L3), call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>)]
|
||||
jmp?(L2) NEXT:[mark({ name?.hashCode() }), r(false) -> <v5>] PREV:[jf(L3), call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>) -> <v4>]
|
||||
r(false) -> <v5>
|
||||
6 mark({ name?.hashCode() })
|
||||
mark(name?.hashCode())
|
||||
|
||||
@@ -28,8 +28,8 @@ fun test(name: String?, flag: Boolean): Boolean {
|
||||
<v1>: Boolean NEW: magic[FAKE_INITIALIZER](flag: Boolean) -> <v1>
|
||||
name <v2>: String NEW: r(name) -> <v2>
|
||||
{ if (flag) { s.add(it) } else { s.remove(it) } return true } <v3>: {<: (String) -> Nothing} NEW: r({ if (flag) { s.add(it) } else { s.remove(it) } return true }) -> <v3>
|
||||
let { if (flag) { s.add(it) } else { s.remove(it) } return true } !<v4>: *
|
||||
name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } !<v4>: * COPY
|
||||
let { if (flag) { s.add(it) } else { s.remove(it) } return true } <v4>: * NEW: call(let { if (flag) { s.add(it) } else { s.remove(it) } return true }, let|<v2>, <v3>) -> <v4>
|
||||
name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } <v4>: * COPY
|
||||
false <v5>: Boolean NEW: r(false) -> <v5>
|
||||
return false !<v6>: *
|
||||
{ name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } return false } !<v6>: * COPY
|
||||
|
||||
Reference in New Issue
Block a user