KT-575 Cannot ++ a class object member

This commit is contained in:
svtk
2011-11-22 18:05:50 +04:00
parent 6628920925
commit 4bf3a61621
17 changed files with 412 additions and 286 deletions
@@ -1,16 +1,3 @@
== get_j ==
get() = 20
---------------------
l3:
<START> NEXT:[r(20)] PREV:[]
r(20) NEXT:[<END>] PREV:[<START>]
l4:
<END> NEXT:[<SINK>] PREV:[r(20)]
error:
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
=====================
== AnonymousInitializers ==
class AnonymousInitializers() {
val k = 34
@@ -29,26 +16,31 @@ class AnonymousInitializers() {
}
---------------------
l0:
<START> NEXT:[r(34)] PREV:[]
r(34) NEXT:[w(k)] PREV:[<START>]
w(k) NEXT:[r(12)] PREV:[r(34)]
r(12) NEXT:[w($i)] PREV:[w(k)]
w($i) NEXT:[r(13)] PREV:[r(12)]
r(13) NEXT:[w($i)] PREV:[w($i)]
w($i) NEXT:[jmp?(l2)] PREV:[r(13)]
jmp?(l2) NEXT:[<END>, d(get() = 20)] PREV:[w($i)]
d(get() = 20) NEXT:[<SINK>] PREV:[jmp?(l2)]
<START> NEXT:[v(val k = 34)] PREV:[]
v(val k = 34) NEXT:[r(34)] PREV:[<START>]
r(34) NEXT:[w(k)] PREV:[v(val k = 34)]
w(k) NEXT:[v(val i: Int)] PREV:[r(34)]
v(val i: Int) NEXT:[r(12)] PREV:[w(k)]
r(12) NEXT:[w($i)] PREV:[v(val i: Int)]
w($i) NEXT:[v(val j: Int get() = 20) ] PREV:[r(12)]
v(val j: Int
get() = 20) NEXT:[r(13)] PREV:[w($i)]
r(13) NEXT:[w($i)] PREV:[v(val j: Int get() = 20) ]
w($i) NEXT:[<END>] PREV:[r(13)]
l1:
l2:
<END> NEXT:[<SINK>] PREV:[jmp?(l2)]
<END> NEXT:[<SINK>] PREV:[w($i)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[d(get() = 20), <END>]
l3:
<SINK> NEXT:[] PREV:[<END>]
=====================
== get_j ==
get() = 20
---------------------
l0:
<START> NEXT:[r(20)] PREV:[]
r(20) NEXT:[<END>] PREV:[<START>]
l4:
l1:
<END> NEXT:[<SINK>] PREV:[r(20)]
error:
<ERROR> NEXT:[] PREV:[]
+25 -24
View File
@@ -10,31 +10,32 @@ fun foo() {
}
---------------------
l0:
<START> NEXT:[r(Array)] PREV:[]
r(Array) NEXT:[r(Array<Int>)] PREV:[<START>]
r(Array<Int>) NEXT:[w(a)] PREV:[r(Array)]
w(a) NEXT:[r(3)] PREV:[r(Array<Int>)]
r(3) NEXT:[r(4)] PREV:[w(a)]
r(4) NEXT:[r(10)] PREV:[r(3)]
r(10) NEXT:[r(a)] PREV:[r(4)]
r(a) NEXT:[r(=)] PREV:[r(10)]
r(=) NEXT:[w(a[10])] PREV:[r(a)]
w(a[10]) NEXT:[r(2)] PREV:[r(=)]
r(2) NEXT:[r(10)] PREV:[w(a[10])]
r(10) NEXT:[r(a)] PREV:[r(2)]
r(a) NEXT:[r(a[10])] PREV:[r(10)]
r(a[10]) NEXT:[r(100)] PREV:[r(a)]
r(100) NEXT:[r(10)] PREV:[r(a[10])]
r(10) NEXT:[r(a)] PREV:[r(100)]
r(a) NEXT:[r(a[10])] PREV:[r(10)]
r(a[10]) NEXT:[r(1)] PREV:[r(a)]
r(1) NEXT:[r(+=)] PREV:[r(a[10])]
r(+=) NEXT:[w(a[10])] PREV:[r(1)]
w(a[10]) NEXT:[<END>] PREV:[r(+=)]
<START> NEXT:[v(val a = Array<Int>)] PREV:[]
v(val a = Array<Int>) NEXT:[r(Array)] PREV:[<START>]
r(Array) NEXT:[r(Array<Int>)] PREV:[v(val a = Array<Int>)]
r(Array<Int>) NEXT:[w(a)] PREV:[r(Array)]
w(a) NEXT:[r(3)] PREV:[r(Array<Int>)]
r(3) NEXT:[r(4)] PREV:[w(a)]
r(4) NEXT:[r(10)] PREV:[r(3)]
r(10) NEXT:[r(a)] PREV:[r(4)]
r(a) NEXT:[r(=)] PREV:[r(10)]
r(=) NEXT:[w(a[10])] PREV:[r(a)]
w(a[10]) NEXT:[r(2)] PREV:[r(=)]
r(2) NEXT:[r(10)] PREV:[w(a[10])]
r(10) NEXT:[r(a)] PREV:[r(2)]
r(a) NEXT:[r(a[10])] PREV:[r(10)]
r(a[10]) NEXT:[r(100)] PREV:[r(a)]
r(100) NEXT:[r(10)] PREV:[r(a[10])]
r(10) NEXT:[r(a)] PREV:[r(100)]
r(a) NEXT:[r(a[10])] PREV:[r(10)]
r(a[10]) NEXT:[r(1)] PREV:[r(a)]
r(1) NEXT:[r(+=)] PREV:[r(a[10])]
r(+=) NEXT:[w(a[10])] PREV:[r(1)]
w(a[10]) NEXT:[<END>] PREV:[r(+=)]
l1:
<END> NEXT:[<SINK>] PREV:[w(a[10])]
<END> NEXT:[<SINK>] PREV:[w(a[10])]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
+44 -39
View File
@@ -4,13 +4,14 @@ class Test {
}
---------------------
l0:
<START> NEXT:[<END>] PREV:[]
<START> NEXT:[v(var x : Int;)] PREV:[]
v(var x : Int;) NEXT:[<END>] PREV:[<START>]
l1:
<END> NEXT:[<SINK>] PREV:[<START>]
<END> NEXT:[<SINK>] PREV:[v(var x : Int;)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== assignments ==
fun assignments() : Unit {
@@ -28,46 +29,50 @@ fun assignments() : Unit {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w(x)] PREV:[<START>]
w(x) NEXT:[r(2)] PREV:[r(1)]
r(2) NEXT:[w(x)] PREV:[w(x)]
w(x) NEXT:[r(x)] PREV:[r(2)]
r(x) NEXT:[r(2)] PREV:[w(x)]
r(2) NEXT:[r(+=)] PREV:[r(x)]
r(+=) NEXT:[w(x)] PREV:[r(2)]
w(x) NEXT:[r(true)] PREV:[r(+=)]
r(true) NEXT:[jf(l2)] PREV:[w(x)]
jf(l2) NEXT:[r(2), r(1)] PREV:[r(true)]
r(1) NEXT:[jmp(l3)] PREV:[jf(l2)]
jmp(l3) NEXT:[w(x)] PREV:[r(1)]
<START> NEXT:[v(var x = 1)] PREV:[]
v(var x = 1) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w(x)] PREV:[v(var x = 1)]
w(x) NEXT:[r(2)] PREV:[r(1)]
r(2) NEXT:[w(x)] PREV:[w(x)]
w(x) NEXT:[r(x)] PREV:[r(2)]
r(x) NEXT:[r(2)] PREV:[w(x)]
r(2) NEXT:[r(+=)] PREV:[r(x)]
r(+=) NEXT:[w(x)] PREV:[r(2)]
w(x) NEXT:[r(true)] PREV:[r(+=)]
r(true) NEXT:[jf(l2)] PREV:[w(x)]
jf(l2) NEXT:[r(2), r(1)] PREV:[r(true)]
r(1) NEXT:[jmp(l3)] PREV:[jf(l2)]
jmp(l3) NEXT:[w(x)] PREV:[r(1)]
l2:
r(2) NEXT:[w(x)] PREV:[jf(l2)]
r(2) NEXT:[w(x)] PREV:[jf(l2)]
l3:
w(x) NEXT:[r(true)] PREV:[jmp(l3), r(2)]
r(true) NEXT:[jf(l4)] PREV:[w(x)]
jf(l4) NEXT:[r(true && false), r(false)] PREV:[r(true)]
r(false) NEXT:[r(true && false)] PREV:[jf(l4)]
w(x) NEXT:[v(val y = true && false)] PREV:[jmp(l3), r(2)]
v(val y = true && false) NEXT:[r(true)] PREV:[w(x)]
r(true) NEXT:[jf(l4)] PREV:[v(val y = true && false)]
jf(l4) NEXT:[r(true && false), r(false)] PREV:[r(true)]
r(false) NEXT:[r(true && false)] PREV:[jf(l4)]
l4:
r(true && false) NEXT:[w(y)] PREV:[jf(l4), r(false)]
w(y) NEXT:[r(false)] PREV:[r(true && false)]
r(false) NEXT:[jf(l5)] PREV:[w(y)]
jf(l5) NEXT:[r(false && true), r(true)] PREV:[r(false)]
r(true) NEXT:[r(false && true)] PREV:[jf(l5)]
r(true && false) NEXT:[w(y)] PREV:[jf(l4), r(false)]
w(y) NEXT:[v(val z = false && true)] PREV:[r(true && false)]
v(val z = false && true) NEXT:[r(false)] PREV:[w(y)]
r(false) NEXT:[jf(l5)] PREV:[v(val z = false && true)]
jf(l5) NEXT:[r(false && true), r(true)] PREV:[r(false)]
r(true) NEXT:[r(false && true)] PREV:[jf(l5)]
l5:
r(false && true) NEXT:[w(z)] PREV:[jf(l5), r(true)]
w(z) NEXT:[r(Test)] PREV:[r(false && true)]
r(Test) NEXT:[r(Test())] PREV:[w(z)]
r(Test()) NEXT:[w(t)] PREV:[r(Test)]
w(t) NEXT:[r(1)] PREV:[r(Test())]
r(1) NEXT:[r(t)] PREV:[w(t)]
r(t) NEXT:[r(=)] PREV:[r(1)]
r(=) NEXT:[w(t.x)] PREV:[r(t)]
w(t.x) NEXT:[<END>] PREV:[r(=)]
r(false && true) NEXT:[w(z)] PREV:[jf(l5), r(true)]
w(z) NEXT:[v(val t = Test())] PREV:[r(false && true)]
v(val t = Test()) NEXT:[r(Test)] PREV:[w(z)]
r(Test) NEXT:[r(Test())] PREV:[v(val t = Test())]
r(Test()) NEXT:[w(t)] PREV:[r(Test)]
w(t) NEXT:[r(1)] PREV:[r(Test())]
r(1) NEXT:[r(t)] PREV:[w(t)]
r(t) NEXT:[r(=)] PREV:[r(1)]
r(=) NEXT:[w(t.x)] PREV:[r(t)]
w(t.x) NEXT:[<END>] PREV:[r(=)]
l1:
<END> NEXT:[<SINK>] PREV:[w(t.x)]
<END> NEXT:[<SINK>] PREV:[w(t.x)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
+89 -82
View File
@@ -392,8 +392,9 @@ l0:
r(1) NEXT:[r(a)] PREV:[<START>]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[w(i)] PREV:[r(..)]
w(i) NEXT:[jmp?(l2)] PREV:[r(1..a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l2)] PREV:[v(i)]
l3:
jmp?(l2) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l4:
@@ -442,8 +443,9 @@ l0:
r(1) NEXT:[r(a)] PREV:[<START>]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[w(i)] PREV:[r(..)]
w(i) NEXT:[jmp?(l2)] PREV:[r(1..a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l2)] PREV:[v(i)]
l3:
jmp?(l2) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l4:
@@ -491,8 +493,9 @@ l0:
r(1) NEXT:[r(a)] PREV:[<START>]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[w(i)] PREV:[r(..)]
w(i) NEXT:[jmp?(l2)] PREV:[r(1..a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l2)] PREV:[v(i)]
l3:
jmp?(l2) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l4:
@@ -588,33 +591,34 @@ fun t13() : Int {
}
---------------------
l0:
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(3)] PREV:[jmp?(l2)]
r(3) NEXT:[r(doSmth)] PREV:[r(1)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(3)] PREV:[jmp?(l2)]
r(3) NEXT:[r(doSmth)] PREV:[r(1)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
l3:
R jmp(l4) NEXT:[r(3)] PREV:[]
R jmp(l4) NEXT:[r(3)] PREV:[]
l2:
jmp?() NEXT:[w(e)] PREV:[jmp?(l2)]
w(e) NEXT:[r(2)] PREV:[jmp?()]
r(2) NEXT:[r(doSmth)] PREV:[w(e)]
r(doSmth) NEXT:[r(doSmth(2))] PREV:[r(2)]
r(doSmth(2)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?()]
w(e) NEXT:[r(2)] PREV:[v(e: UnsupportedOperationException)]
r(2) NEXT:[r(doSmth)] PREV:[w(e)]
r(doSmth) NEXT:[r(doSmth(2))] PREV:[r(2)]
r(doSmth(2)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
l5:
jmp(l4) NEXT:[r(3)] PREV:[r(doSmth(2))]
jmp(l4) NEXT:[r(3)] PREV:[r(doSmth(2))]
l4:
r(3) NEXT:[r(doSmth)] PREV:[jmp(l4)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
r(3) NEXT:[r(doSmth)] PREV:[jmp(l4)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== t14 ==
fun t14() : Int {
@@ -627,27 +631,28 @@ fun t14() : Int {
}
---------------------
l0:
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[ret(*) l1] PREV:[jmp?(l2)]
ret(*) l1 NEXT:[<END>] PREV:[r(1)]
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[ret(*) l1] PREV:[jmp?(l2)]
ret(*) l1 NEXT:[<END>] PREV:[r(1)]
l3:
R jmp(l4) NEXT:[<END>] PREV:[]
R jmp(l4) NEXT:[<END>] PREV:[]
l2:
jmp?() NEXT:[w(e)] PREV:[jmp?(l2)]
w(e) NEXT:[r(2)] PREV:[jmp?()]
r(2) NEXT:[r(doSmth)] PREV:[w(e)]
r(doSmth) NEXT:[r(doSmth(2))] PREV:[r(2)]
r(doSmth(2)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?()]
w(e) NEXT:[r(2)] PREV:[v(e: UnsupportedOperationException)]
r(2) NEXT:[r(doSmth)] PREV:[w(e)]
r(doSmth) NEXT:[r(doSmth(2))] PREV:[r(2)]
r(doSmth(2)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
l5:
jmp(l4) NEXT:[<END>] PREV:[r(doSmth(2))]
jmp(l4) NEXT:[<END>] PREV:[r(doSmth(2))]
l1:
l4:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, jmp(l4)]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, jmp(l4)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== t15 ==
fun t15() : Int {
@@ -663,35 +668,36 @@ fun t15() : Int {
}
---------------------
l0:
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(3)] PREV:[jmp?(l2)]
r(3) NEXT:[r(doSmth)] PREV:[r(1)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(3)] PREV:[jmp?(l2)]
r(3) NEXT:[r(doSmth)] PREV:[r(1)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
l3:
R jmp(l4) NEXT:[r(3)] PREV:[]
R jmp(l4) NEXT:[r(3)] PREV:[]
l2:
jmp?() NEXT:[w(e)] PREV:[jmp?(l2)]
w(e) NEXT:[r(2)] PREV:[jmp?()]
r(2) NEXT:[r(3)] PREV:[w(e)]
r(3) NEXT:[r(doSmth)] PREV:[r(2)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?()]
w(e) NEXT:[r(2)] PREV:[v(e: UnsupportedOperationException)]
r(2) NEXT:[r(3)] PREV:[w(e)]
r(3) NEXT:[r(doSmth)] PREV:[r(2)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
l5:
R jmp(l4) NEXT:[r(3)] PREV:[]
R jmp(l4) NEXT:[r(3)] PREV:[]
l4:
R r(3) NEXT:[r(doSmth)] PREV:[]
R r(doSmth) NEXT:[r(doSmth(3))] PREV:[]
R r(doSmth(3)) NEXT:[<END>] PREV:[]
R r(3) NEXT:[r(doSmth)] PREV:[]
R r(doSmth) NEXT:[r(doSmth(3))] PREV:[]
R r(doSmth(3)) NEXT:[<END>] PREV:[]
l1:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, ret(*) l1]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, ret(*) l1]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== t16 ==
fun t16() : Int {
@@ -707,33 +713,34 @@ fun t16() : Int {
}
---------------------
l0:
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(doSmth)] PREV:[jmp?(l2)]
r(doSmth) NEXT:[r(doSmth(1))] PREV:[r(1)]
r(doSmth(1)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[jmp?(), r(1)] PREV:[<START>]
r(1) NEXT:[r(doSmth)] PREV:[jmp?(l2)]
r(doSmth) NEXT:[r(doSmth(1))] PREV:[r(1)]
r(doSmth(1)) NEXT:[jmp(l4)] PREV:[r(doSmth)]
l3:
jmp(l4) NEXT:[r(3)] PREV:[r(doSmth(1))]
jmp(l4) NEXT:[r(3)] PREV:[r(doSmth(1))]
l2:
jmp?() NEXT:[w(e)] PREV:[jmp?(l2)]
w(e) NEXT:[r(2)] PREV:[jmp?()]
r(2) NEXT:[r(3)] PREV:[w(e)]
r(3) NEXT:[r(doSmth)] PREV:[r(2)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?()]
w(e) NEXT:[r(2)] PREV:[v(e: UnsupportedOperationException)]
r(2) NEXT:[r(3)] PREV:[w(e)]
r(3) NEXT:[r(doSmth)] PREV:[r(2)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[ret(*) l1] PREV:[r(doSmth)]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
l5:
R jmp(l4) NEXT:[r(3)] PREV:[]
R jmp(l4) NEXT:[r(3)] PREV:[]
l4:
r(3) NEXT:[r(doSmth)] PREV:[jmp(l4)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
r(3) NEXT:[r(doSmth)] PREV:[jmp(l4)]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== doSmth ==
fun doSmth(i: Int) {
+3 -2
View File
@@ -10,8 +10,9 @@ l0:
r(1) NEXT:[r(2)] PREV:[<START>]
r(2) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..2)] PREV:[r(2)]
r(1..2) NEXT:[w(i)] PREV:[r(..)]
w(i) NEXT:[jmp?(l2)] PREV:[r(1..2)]
r(1..2) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..2)]
w(i) NEXT:[jmp?(l2)] PREV:[v(i)]
l3:
jmp?(l2) NEXT:[read (Unit), r(i)] PREV:[w(i)]
l4:
+28 -25
View File
@@ -17,36 +17,38 @@ fun t1(b: Boolean) {
}
---------------------
l0:
<START> NEXT:[r(b)] PREV:[]
r(b) NEXT:[jf(l2)] PREV:[<START>]
jf(l2) NEXT:[read (Unit), r("s")] PREV:[r(b)]
r("s") NEXT:[w(u)] PREV:[jf(l2)]
w(u) NEXT:[jmp(l3)] PREV:[r("s")]
jmp(l3) NEXT:[r(u)] PREV:[w(u)]
<START> NEXT:[v(var u: String)] PREV:[]
v(var u: String) NEXT:[r(b)] PREV:[<START>]
r(b) NEXT:[jf(l2)] PREV:[v(var u: String)]
jf(l2) NEXT:[read (Unit), r("s")] PREV:[r(b)]
r("s") NEXT:[w(u)] PREV:[jf(l2)]
w(u) NEXT:[jmp(l3)] PREV:[r("s")]
jmp(l3) NEXT:[r(u)] PREV:[w(u)]
l2:
read (Unit) NEXT:[r(u)] PREV:[jf(l2)]
read (Unit) NEXT:[r(u)] PREV:[jf(l2)]
l3:
r(u) NEXT:[r(doSmth)] PREV:[jmp(l3), read (Unit)]
r(doSmth) NEXT:[r(doSmth(u))] PREV:[r(u)]
r(doSmth(u)) NEXT:[r(b)] PREV:[r(doSmth)]
r(b) NEXT:[jf(l4)] PREV:[r(doSmth(u))]
jf(l4) NEXT:[r("t"), r("s")] PREV:[r(b)]
r("s") NEXT:[w(r)] PREV:[jf(l4)]
w(r) NEXT:[jmp(l5)] PREV:[r("s")]
jmp(l5) NEXT:[r(r)] PREV:[w(r)]
r(u) NEXT:[r(doSmth)] PREV:[jmp(l3), read (Unit)]
r(doSmth) NEXT:[r(doSmth(u))] PREV:[r(u)]
r(doSmth(u)) NEXT:[v(var r: String)] PREV:[r(doSmth)]
v(var r: String) NEXT:[r(b)] PREV:[r(doSmth(u))]
r(b) NEXT:[jf(l4)] PREV:[v(var r: String)]
jf(l4) NEXT:[r("t"), r("s")] PREV:[r(b)]
r("s") NEXT:[w(r)] PREV:[jf(l4)]
w(r) NEXT:[jmp(l5)] PREV:[r("s")]
jmp(l5) NEXT:[r(r)] PREV:[w(r)]
l4:
r("t") NEXT:[w(r)] PREV:[jf(l4)]
w(r) NEXT:[r(r)] PREV:[r("t")]
r("t") NEXT:[w(r)] PREV:[jf(l4)]
w(r) NEXT:[r(r)] PREV:[r("t")]
l5:
r(r) NEXT:[r(doSmth)] PREV:[jmp(l5), w(r)]
r(doSmth) NEXT:[r(doSmth(r))] PREV:[r(r)]
r(doSmth(r)) NEXT:[<END>] PREV:[r(doSmth)]
r(r) NEXT:[r(doSmth)] PREV:[jmp(l5), w(r)]
r(doSmth) NEXT:[r(doSmth(r))] PREV:[r(r)]
r(doSmth(r)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
<END> NEXT:[<SINK>] PREV:[r(doSmth(r))]
<END> NEXT:[<SINK>] PREV:[r(doSmth(r))]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== t2 ==
fun t2(b: Boolean) {
@@ -61,8 +63,9 @@ fun t2(b: Boolean) {
}
---------------------
l0:
<START> NEXT:[r(3)] PREV:[]
r(3) NEXT:[w(i)] PREV:[<START>]
<START> NEXT:[v(val i = 3)] PREV:[]
v(val i = 3) NEXT:[r(3)] PREV:[<START>]
r(3) NEXT:[w(i)] PREV:[v(val i = 3)]
w(i) NEXT:[r(b)] PREV:[r(3)]
r(b) NEXT:[jf(l2)] PREV:[w(i)]
jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)]
@@ -18,15 +18,16 @@ class C() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w(a)] PREV:[<START>]
w(a) NEXT:[<END>] PREV:[r(1)]
<START> NEXT:[v(val a: Int = 1)] PREV:[]
v(val a: Int = 1) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w(a)] PREV:[v(val a: Int = 1)]
w(a) NEXT:[<END>] PREV:[r(1)]
l1:
<END> NEXT:[<SINK>] PREV:[w(a)]
<END> NEXT:[<SINK>] PREV:[w(a)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== null ==
object {
@@ -44,15 +45,16 @@ object {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w($x)] PREV:[<START>]
w($x) NEXT:[<END>] PREV:[r(1)]
<START> NEXT:[v(val x : Int)] PREV:[]
v(val x : Int) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w($x)] PREV:[v(val x : Int)]
w($x) NEXT:[<END>] PREV:[r(1)]
l1:
<END> NEXT:[<SINK>] PREV:[w($x)]
<END> NEXT:[<SINK>] PREV:[w($x)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== O ==
object O {
@@ -63,15 +65,16 @@ object O {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w($x)] PREV:[<START>]
w($x) NEXT:[<END>] PREV:[r(1)]
<START> NEXT:[v(val x : Int)] PREV:[]
v(val x : Int) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w($x)] PREV:[v(val x : Int)]
w($x) NEXT:[<END>] PREV:[r(1)]
l1:
<END> NEXT:[<SINK>] PREV:[w($x)]
<END> NEXT:[<SINK>] PREV:[w($x)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== doSmth ==
fun doSmth(i: Int) {}
@@ -97,8 +100,15 @@ fun test1() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w($x)] PREV:[<START>]
<START> NEXT:[v(val a = object { val x : I..)] PREV:[]
v(val a = object {
val x : Int
{
$x = 1
}
}) NEXT:[v(val x : Int)] PREV:[<START>]
v(val x : Int) NEXT:[r(1)] PREV:[v(val a = object { val x : I..)]
r(1) NEXT:[w($x)] PREV:[v(val x : Int)]
w($x) NEXT:[r(object { val x : Int { $x ..)] PREV:[r(1)]
r(object {
val x : Int
@@ -123,21 +133,26 @@ fun test2() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w(b)] PREV:[<START>]
w(b) NEXT:[r(b)] PREV:[r(1)]
r(b) NEXT:[w(x)] PREV:[w(b)]
w(x) NEXT:[r(object { val x = b }) ] PREV:[r(b)]
r(object {
val x = b
}) NEXT:[w(a)] PREV:[w(x)]
w(a) NEXT:[<END>] PREV:[r(object { val x = b }) ]
<START> NEXT:[v(val b = 1)] PREV:[]
v(val b = 1) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w(b)] PREV:[v(val b = 1)]
w(b) NEXT:[v(val a = object { val x = b..)] PREV:[r(1)]
v(val a = object {
val x = b
}) NEXT:[v(val x = b)] PREV:[w(b)]
v(val x = b) NEXT:[r(b)] PREV:[v(val a = object { val x = b..)]
r(b) NEXT:[w(x)] PREV:[v(val x = b)]
w(x) NEXT:[r(object { val x = b }) ] PREV:[r(b)]
r(object {
val x = b
}) NEXT:[w(a)] PREV:[w(x)]
w(a) NEXT:[<END>] PREV:[r(object { val x = b }) ]
l1:
<END> NEXT:[<SINK>] PREV:[w(a)]
<END> NEXT:[<SINK>] PREV:[w(a)]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================
== inner_bar ==
fun inner_bar() {
@@ -166,8 +181,15 @@ fun test3() {
}
---------------------
l0:
<START> NEXT:[jmp?(l2)] PREV:[]
jmp?(l2) NEXT:[r(object { val y : Int fun i..), d(fun inner_bar() { y = 10 }) ] PREV:[<START>]
<START> NEXT:[v(val a = object { val y : I..)] PREV:[]
v(val a = object {
val y : Int
fun inner_bar() {
y = 10
}
}) NEXT:[v(val y : Int)] PREV:[<START>]
v(val y : Int) NEXT:[jmp?(l2)] PREV:[v(val a = object { val y : I..)]
jmp?(l2) NEXT:[r(object { val y : Int fun i..), d(fun inner_bar() { y = 10 }) ] PREV:[v(val y : Int)]
d(fun inner_bar() {
y = 10
}) NEXT:[<SINK>] PREV:[jmp?(l2)]
@@ -227,8 +249,20 @@ fun test4() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w($x)] PREV:[<START>]
<START> NEXT:[v(val a = object { val x : I..)] PREV:[]
v(val a = object {
val x : Int
val y : Int
{
$x = 1
}
fun ggg() {
y = 10
}
}) NEXT:[v(val x : Int)] PREV:[<START>]
v(val x : Int) NEXT:[v(val y : Int)] PREV:[v(val a = object { val x : I..)]
v(val y : Int) NEXT:[r(1)] PREV:[v(val x : Int)]
r(1) NEXT:[w($x)] PREV:[v(val y : Int)]
w($x) NEXT:[jmp?(l2)] PREV:[r(1)]
jmp?(l2) NEXT:[r(object { val x : Int val y..), d(fun ggg() { y = 10 }) ] PREV:[w($x)]
d(fun ggg() {
@@ -312,8 +346,21 @@ fun test5() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w(x)] PREV:[<START>]
<START> NEXT:[v(val a = object { var x = 1..)] PREV:[]
v(val a = object {
var x = 1
{
$x = 2
}
fun foo() {
x = 3
}
fun bar() {
x = 4
}
}) NEXT:[v(var x = 1)] PREV:[<START>]
v(var x = 1) NEXT:[r(1)] PREV:[v(val a = object { var x = 1..)]
r(1) NEXT:[w(x)] PREV:[v(var x = 1)]
w(x) NEXT:[r(2)] PREV:[r(1)]
r(2) NEXT:[w($x)] PREV:[w(x)]
w($x) NEXT:[jmp?(l2)] PREV:[r(2)]
@@ -374,16 +421,17 @@ fun foo() {
}
---------------------
l0:
<START> NEXT:[r(1)] PREV:[]
r(1) NEXT:[w(b)] PREV:[<START>]
w(b) NEXT:[r(b)] PREV:[r(1)]
r(b) NEXT:[r(doSmth)] PREV:[w(b)]
r(doSmth) NEXT:[r(doSmth(b))] PREV:[r(b)]
r(doSmth(b)) NEXT:[<END>] PREV:[r(doSmth)]
<START> NEXT:[v(val b : Int = 1)] PREV:[]
v(val b : Int = 1) NEXT:[r(1)] PREV:[<START>]
r(1) NEXT:[w(b)] PREV:[v(val b : Int = 1)]
w(b) NEXT:[r(b)] PREV:[r(1)]
r(b) NEXT:[r(doSmth)] PREV:[w(b)]
r(doSmth) NEXT:[r(doSmth(b))] PREV:[r(b)]
r(doSmth(b)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
<END> NEXT:[<SINK>] PREV:[r(doSmth(b))]
<END> NEXT:[<SINK>] PREV:[r(doSmth(b))]
error:
<ERROR> NEXT:[] PREV:[]
<ERROR> NEXT:[] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<END>]
<SINK> NEXT:[] PREV:[<END>]
=====================