Files
kotlin-fork/compiler/testData/cfg-variables/bugs/referenceToPropertyInitializer.instructions
T
Denis Zharkov edbf360852 Do not render trivial variables in DataFlow tests
The reason is that while there are optimizations for them
definition of their state is both rather simple and may be
confusing in testData
2017-10-02 10:04:16 +03:00

146 lines
5.3 KiB
Plaintext
Vendored

== TestFunctionLiteral ==
class TestFunctionLiteral {
val sum: (Int)->Int = { x: Int ->
sum(x - 1) + x
}
}
---------------------
L0:
1 <START> INIT: in: {} out: {}
v(val sum: (Int)->Int = { x: Int -> sum(x - 1) + x }) INIT: in: {} out: {}
mark({ x: Int -> sum(x - 1) + x }) INIT: in: {} out: {}
jmp?(L2)
d({ x: Int -> sum(x - 1) + x }) INIT: in: {} out: {}
L2 [after local declaration]:
r({ x: Int -> sum(x - 1) + x }) -> <v0>
w(sum|<v0>) INIT: in: {} out: {}
L1:
<END> INIT: in: {} out: {}
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== anonymous_0 ==
{ x: Int ->
sum(x - 1) + x
}
---------------------
L3:
2 <START> INIT: in: {} out: {}
v(x: Int) INIT: in: {} out: {}
magic[FAKE_INITIALIZER](x: Int) -> <v0> INIT: in: {} out: {}
w(x|<v0>) INIT: in: {} out: {}
3 mark(sum(x - 1) + x) INIT: in: {} out: {}
magic[IMPLICIT_RECEIVER](sum) -> <v1>
r(sum|<v1>) -> <v2>
r(x) -> <v3>
r(1) -> <v4>
mark(x - 1)
call(x - 1, minus|<v3>, <v4>) -> <v5>
mark(sum(x - 1))
call(sum(x - 1), invoke|<v2>, <v5>) -> <v6>
r(x) -> <v7>
mark(sum(x - 1) + x)
call(sum(x - 1) + x, plus|<v6>, <v7>) -> <v8>
2 ret(*|<v8>) L4
L4:
<END>
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== A ==
open class A(val a: A)
---------------------
L0:
1 <START> INIT: in: {} out: {}
v(val a: A) INIT: in: {} out: {}
magic[FAKE_INITIALIZER](val a: A) -> <v0> INIT: in: {} out: {}
w(a|<v0>) INIT: in: {} out: {}
L1:
<END> INIT: in: {} out: {}
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== TestObjectLiteral ==
class TestObjectLiteral {
val obj: A = object: A(obj) {
init {
val x = obj
}
fun foo() {
val y = obj
}
}
}
---------------------
L0:
1 <START> INIT: in: {} out: {}
v(val obj: A = object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) INIT: in: {} out: {}
mark(object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) INIT: in: {} out: {}
magic[IMPLICIT_RECEIVER](obj) -> <v0>
r(obj|<v0>) -> <v1>
mark(A(obj))
call(A(obj), <init>|<v1>) -> <v2>
2 mark({ val x = obj })
v(val x = obj) INIT: in: {} out: {}
magic[IMPLICIT_RECEIVER](obj) -> <v3> INIT: in: {} out: {}
r(obj|<v3>) -> <v4>
w(x|<v4>) INIT: in: {} out: {}
1 jmp?(L2) INIT: in: {} out: {}
d(fun foo() { val y = obj }) INIT: in: {} out: {}
L2 [after local declaration]:
r(object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) -> <v5>
w(obj|<v5>) INIT: in: {} out: {}
L1:
<END> INIT: in: {} out: {}
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== foo ==
fun foo() {
val y = obj
}
---------------------
L3:
2 <START> INIT: in: {} out: {}
3 mark({ val y = obj })
v(val y = obj) INIT: in: {} out: {}
magic[IMPLICIT_RECEIVER](obj) -> <v0> INIT: in: {} out: {}
r(obj|<v0>) -> <v1>
w(y|<v1>) INIT: in: {} out: {}
L4:
2 <END> INIT: in: {} out: {}
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== TestOther ==
class TestOther {
val x: Int = x + 1
}
---------------------
L0:
1 <START> INIT: in: {} out: {}
v(val x: Int = x + 1) INIT: in: {} out: {}
magic[IMPLICIT_RECEIVER](x) -> <v0> INIT: in: {} out: {}
r(x|<v0>) -> <v1>
r(1) -> <v2>
mark(x + 1)
call(x + 1, plus|<v1>, <v2>) -> <v3>
w(x|<v3>) INIT: in: {} out: {}
L1:
<END> INIT: in: {} out: {}
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================