6a4043c9a0
For better readability of test failures
110 lines
2.5 KiB
Plaintext
110 lines
2.5 KiB
Plaintext
== t1 ==
|
|
fun t1(b: Boolean) {
|
|
var u: String
|
|
if (b) {
|
|
u = "s"
|
|
}
|
|
doSmth(u)
|
|
|
|
var r: String
|
|
if (b) {
|
|
r = "s"
|
|
}
|
|
else {
|
|
r = "t"
|
|
}
|
|
doSmth(r)
|
|
}
|
|
---------------------
|
|
L0:
|
|
<START>
|
|
v(b: Boolean)
|
|
w(b)
|
|
v(var u: String)
|
|
r(b)
|
|
jf(L2) NEXT:[read (Unit), r("s")]
|
|
r("s")
|
|
w(u)
|
|
jmp(L3) NEXT:[r(u)]
|
|
L2:
|
|
read (Unit) PREV:[jf(L2)]
|
|
L3:
|
|
r(u) PREV:[jmp(L3), read (Unit)]
|
|
call(doSmth, doSmth)
|
|
v(var r: String)
|
|
r(b)
|
|
jf(L4) NEXT:[r("t"), r("s")]
|
|
r("s")
|
|
w(r)
|
|
jmp(L5) NEXT:[r(r)]
|
|
L4:
|
|
r("t") PREV:[jf(L4)]
|
|
w(r)
|
|
L5:
|
|
r(r) PREV:[jmp(L5), w(r)]
|
|
call(doSmth, doSmth)
|
|
L1:
|
|
<END> NEXT:[<SINK>]
|
|
error:
|
|
<ERROR> PREV:[]
|
|
sink:
|
|
<SINK> PREV:[<ERROR>, <END>]
|
|
=====================
|
|
== t2 ==
|
|
fun t2(b: Boolean) {
|
|
val i = 3
|
|
if (b) {
|
|
return;
|
|
}
|
|
doSmth(i)
|
|
if (i is Int) {
|
|
return;
|
|
}
|
|
}
|
|
---------------------
|
|
L0:
|
|
<START>
|
|
v(b: Boolean)
|
|
w(b)
|
|
v(val i = 3)
|
|
r(3)
|
|
w(i)
|
|
r(b)
|
|
jf(L2) NEXT:[read (Unit), ret L1]
|
|
ret L1 NEXT:[<END>]
|
|
- jmp(L3) NEXT:[r(i)] PREV:[]
|
|
L2:
|
|
read (Unit) PREV:[jf(L2)]
|
|
L3:
|
|
r(i)
|
|
call(doSmth, doSmth)
|
|
r(i)
|
|
jf(L4) NEXT:[read (Unit), ret L1]
|
|
ret L1 NEXT:[<END>]
|
|
- jmp(L5) NEXT:[<END>] PREV:[]
|
|
L4:
|
|
read (Unit) PREV:[jf(L4)]
|
|
L1:
|
|
L5:
|
|
<END> NEXT:[<SINK>] PREV:[ret L1, ret L1, read (Unit)]
|
|
error:
|
|
<ERROR> PREV:[]
|
|
sink:
|
|
<SINK> PREV:[<ERROR>, <END>]
|
|
=====================
|
|
== doSmth ==
|
|
fun doSmth(s: String) {}
|
|
---------------------
|
|
L0:
|
|
<START>
|
|
v(s: String)
|
|
w(s)
|
|
read (Unit)
|
|
L1:
|
|
<END> NEXT:[<SINK>]
|
|
error:
|
|
<ERROR> PREV:[]
|
|
sink:
|
|
<SINK> PREV:[<ERROR>, <END>]
|
|
=====================
|