73799e2c3c
It's done with similar constructions where possible trying to preserve intended behavior. Some usages are removed because they test exactly the feature that we are going to drop soon.
75 lines
3.6 KiB
Plaintext
Vendored
75 lines
3.6 KiB
Plaintext
Vendored
== foo ==
|
|
fun foo() {
|
|
val a = 1
|
|
val f = { x: Int ->
|
|
val y = x + a
|
|
use(a)
|
|
}
|
|
}
|
|
---------------------
|
|
L0:
|
|
1 <START> INIT: in: {} out: {} USE: in: {} out: {}
|
|
2 mark({ val a = 1 val f = { x: Int -> val y = x + a use(a) } })
|
|
v(val a = 1) INIT: in: {} out: {a=D}
|
|
r(1) -> <v0> INIT: in: {a=D} out: {a=D}
|
|
w(a|<v0>) INIT: in: {a=D} out: {a=ID}
|
|
v(val f = { x: Int -> val y = x + a use(a) }) INIT: in: {a=ID} out: {a=ID, f=D}
|
|
mark({ x: Int -> val y = x + a use(a) }) INIT: in: {a=ID, f=D} out: {a=ID, f=D}
|
|
jmp?(L2)
|
|
d({ x: Int -> val y = x + a use(a) }) USE: in: {a=READ} out: {a=READ}
|
|
L2 [after local declaration]:
|
|
r({ x: Int -> val y = x + a use(a) }) -> <v1>
|
|
w(f|<v1>) INIT: in: {a=ID, f=D} out: {a=ID, f=ID}
|
|
L1:
|
|
1 <END> INIT: in: {} out: {}
|
|
error:
|
|
<ERROR>
|
|
sink:
|
|
<SINK> USE: in: {} out: {}
|
|
=====================
|
|
== anonymous_0 ==
|
|
{ x: Int ->
|
|
val y = x + a
|
|
use(a)
|
|
}
|
|
---------------------
|
|
L3:
|
|
3 <START> INIT: in: {} out: {}
|
|
v(x: Int) INIT: in: {} out: {x=D}
|
|
magic[FAKE_INITIALIZER](x: Int) -> <v0> INIT: in: {x=D} out: {x=D}
|
|
w(x|<v0>) INIT: in: {x=D} out: {x=ID}
|
|
4 mark(val y = x + a use(a)) INIT: in: {x=ID} out: {x=ID}
|
|
v(val y = x + a) INIT: in: {x=ID} out: {x=ID, y=D} USE: in: {a=READ, x=READ} out: {a=READ, x=READ}
|
|
r(x) -> <v1> INIT: in: {x=ID, y=D} out: {x=ID, y=D} USE: in: {a=READ} out: {a=READ, x=READ}
|
|
r(a) -> <v2>
|
|
mark(x + a)
|
|
call(x + a, plus|<v1>, <v2>) -> <v3>
|
|
w(y|<v3>) INIT: in: {x=ID, y=D} out: {x=ID, y=ID} USE: in: {a=READ} out: {a=READ}
|
|
r(a) -> <v4> INIT: in: {x=ID, y=ID} out: {x=ID, y=ID} USE: in: {} out: {a=READ}
|
|
mark(use(a))
|
|
call(use(a), use|<v4>) -> <v5>
|
|
3 ret(*|<v5>) L4 INIT: in: {x=ID} out: {x=ID}
|
|
L4:
|
|
<END>
|
|
error:
|
|
<ERROR> INIT: in: {} out: {}
|
|
sink:
|
|
<SINK> INIT: in: {x=ID} out: {x=ID} USE: in: {} out: {}
|
|
=====================
|
|
== use ==
|
|
fun use(vararg a: Any?) = a
|
|
---------------------
|
|
L0:
|
|
1 <START> INIT: in: {} out: {}
|
|
v(vararg a: Any?) INIT: in: {} out: {a=D}
|
|
magic[FAKE_INITIALIZER](vararg a: Any?) -> <v0> INIT: in: {a=D} out: {a=D}
|
|
w(a|<v0>) INIT: in: {a=D} out: {a=ID} USE: in: {a=READ} out: {a=READ}
|
|
r(a) -> <v1> INIT: in: {a=ID} out: {a=ID} USE: in: {} out: {a=READ}
|
|
ret(*|<v1>) L1
|
|
L1:
|
|
<END>
|
|
error:
|
|
<ERROR> INIT: in: {} out: {}
|
|
sink:
|
|
<SINK> INIT: in: {a=ID} out: {a=ID} USE: in: {} out: {}
|
|
===================== |