added names for loop labels

updated control flow test data
This commit is contained in:
Svetlana Isakova
2012-12-12 18:36:29 +04:00
parent 9904f21ceb
commit 97058e628e
7 changed files with 350 additions and 354 deletions
+238 -242
View File
@@ -352,10 +352,10 @@ l0:
2
}
}) NEXT:[r(true)] PREV:[<START>]
l2:
l5:
r(true) NEXT:[r(try { 1 if (2 > 3) { break..)] PREV:[r(while(true) { try { 1 if (..), jmp(l2)]
l4:
l2 [loop entry point]:
l5 [condition entry point]:
r(true) NEXT:[r(try { 1 if (2 > 3) { break..)] PREV:[r(while(true) { try { 1 if (..), jmp(l2 [loop entry point])]
l4 [body entry point]:
r(try {
1
if (2 > 3) {
@@ -372,9 +372,9 @@ l4:
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)]
l8 [start finally]:
r(2) NEXT:[jmp(l3)] PREV:[jf(l7)]
r(2) NEXT:[jmp(l3 [loop exit point])] PREV:[jf(l7)]
l9 [finish finally]:
jmp(l3) NEXT:[read (Unit)] PREV:[r(2)]
jmp(l3 [loop exit point]) NEXT:[read (Unit)] PREV:[r(2)]
- jmp(l10) NEXT:[jmp(l11 [skipFinallyToErrorBlock])] PREV:[]
l7:
read (Unit) NEXT:[jmp(l11 [skipFinallyToErrorBlock])] PREV:[jf(l7)]
@@ -385,11 +385,11 @@ l6 [onExceptionToFinallyBlock]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l6 [onExceptionToFinallyBlock])]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l11 [skipFinallyToErrorBlock]:
r(2) NEXT:[jmp(l2)] PREV:[jmp(l11 [skipFinallyToErrorBlock])]
r(2) NEXT:[jmp(l2 [loop entry point])] PREV:[jmp(l11 [skipFinallyToErrorBlock])]
l12 [stop [d0]]:
jmp(l2) NEXT:[r(true)] PREV:[r(2)]
l3:
read (Unit) NEXT:[<END>] PREV:[jmp(l3)]
jmp(l2 [loop entry point]) NEXT:[r(true)] PREV:[r(2)]
l3 [loop exit point]:
read (Unit) NEXT:[<END>] PREV:[jmp(l3 [loop exit point])]
l1:
<END> NEXT:[<SINK>] PREV:[read (Unit)]
error:
@@ -413,7 +413,7 @@ fun t6() {
}
---------------------
l0:
<START> NEXT:[r(try { @ while(true) { 1 if..)] PREV:[]
<START> NEXT:[r(try { @ while(true) { 1 if..)] PREV:[]
r(try {
@ while(true) {
1
@@ -424,49 +424,49 @@ l0:
5
} finally {
2
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[<START>]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(while(true) { 1 if (2 > 3)..)] PREV:[r(try { @ while(true) { 1 if..)]
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[<START>]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(while(true) { 1 if (2 > 3)..)] PREV:[r(try { @ while(true) { 1 if..)]
r(while(true) {
1
if (2 > 3) {
break @
}
}) NEXT:[r(true)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l3:
l6:
r(true) NEXT:[r(1)] PREV:[r(while(true) { 1 if (2 > 3)..), jmp(l3)]
l5:
r(1) NEXT:[r(2)] PREV:[r(true)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l4)] PREV:[r(2 > 3)]
jmp(l4) NEXT:[read (Unit)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp(l3)] PREV:[]
}) NEXT:[r(true)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l3 [loop entry point]:
l6 [condition entry point]:
r(true) NEXT:[r(1)] PREV:[r(while(true) { 1 if (2 > 3)..), jmp(l3 [loop entry point])]
l5 [body entry point]:
r(1) NEXT:[r(2)] PREV:[r(true)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l4 [loop exit point])] PREV:[r(2 > 3)]
jmp(l4 [loop exit point]) NEXT:[read (Unit)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp(l3 [loop entry point])] PREV:[]
l7:
read (Unit) NEXT:[jmp(l3)] PREV:[jf(l7)]
read (Unit) NEXT:[jmp(l3 [loop entry point])] PREV:[jf(l7)]
l8:
jmp(l3) NEXT:[r(true)] PREV:[read (Unit)]
l4:
read (Unit) NEXT:[r(5)] PREV:[jmp(l4)]
r(5) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[read (Unit)]
jmp(l3 [loop entry point]) NEXT:[r(true)] PREV:[read (Unit)]
l4 [loop exit point]:
read (Unit) NEXT:[r(5)] PREV:[jmp(l4 [loop exit point])]
r(5) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[read (Unit)]
d0:
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[r(5)]
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[r(5)]
l2 [onExceptionToFinallyBlock]:
l10 [start finally]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l11 [finish finally]:
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l9 [skipFinallyToErrorBlock]:
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
l1:
l12 [stop [d0]]:
<END> NEXT:[<SINK>] PREV:[r(2)]
<END> NEXT:[<SINK>] PREV:[r(2)]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t7 ==
fun t7() {
@@ -483,7 +483,7 @@ fun t7() {
}
---------------------
l0:
<START> NEXT:[r(try { @ while(true) { 1 if..)] PREV:[]
<START> NEXT:[r(try { @ while(true) { 1 if..)] PREV:[]
r(try {
@ while(true) {
1
@@ -493,48 +493,48 @@ l0:
}
} finally {
2
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[<START>]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(while(true) { 1 if (2 > 3)..)] PREV:[r(try { @ while(true) { 1 if..)]
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[<START>]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(while(true) { 1 if (2 > 3)..)] PREV:[r(try { @ while(true) { 1 if..)]
r(while(true) {
1
if (2 > 3) {
break @
}
}) NEXT:[r(true)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l3:
l6:
r(true) NEXT:[r(1)] PREV:[r(while(true) { 1 if (2 > 3)..), jmp(l3)]
l5:
r(1) NEXT:[r(2)] PREV:[r(true)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l4)] PREV:[r(2 > 3)]
jmp(l4) NEXT:[read (Unit)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp(l3)] PREV:[]
}) NEXT:[r(true)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l3 [loop entry point]:
l6 [condition entry point]:
r(true) NEXT:[r(1)] PREV:[r(while(true) { 1 if (2 > 3)..), jmp(l3 [loop entry point])]
l5 [body entry point]:
r(1) NEXT:[r(2)] PREV:[r(true)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l4 [loop exit point])] PREV:[r(2 > 3)]
jmp(l4 [loop exit point]) NEXT:[read (Unit)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp(l3 [loop entry point])] PREV:[]
l7:
read (Unit) NEXT:[jmp(l3)] PREV:[jf(l7)]
read (Unit) NEXT:[jmp(l3 [loop entry point])] PREV:[jf(l7)]
l8:
jmp(l3) NEXT:[r(true)] PREV:[read (Unit)]
l4:
read (Unit) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[jmp(l4)]
jmp(l3 [loop entry point]) NEXT:[r(true)] PREV:[read (Unit)]
l4 [loop exit point]:
read (Unit) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[jmp(l4 [loop exit point])]
d0:
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[read (Unit)]
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[read (Unit)]
l2 [onExceptionToFinallyBlock]:
l10 [start finally]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l11 [finish finally]:
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l9 [skipFinallyToErrorBlock]:
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
l1:
l12 [stop [d0]]:
<END> NEXT:[<SINK>] PREV:[r(2)]
<END> NEXT:[<SINK>] PREV:[r(2)]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t8 ==
fun t8(a : Int) {
@@ -572,8 +572,8 @@ l0:
w(i) NEXT:[jmp?(l2)] PREV:[v(i)]
l3:
jmp?(l2) NEXT:[read (Unit), r(try { 1 if (2 > 3) { conti..)] PREV:[w(i)]
l4:
l5:
l4 [loop entry point]:
l5 [body entry point]:
r(try {
1
if (2 > 3) {
@@ -581,7 +581,7 @@ l5:
}
} finally {
2
}) NEXT:[jmp?(l6 [onExceptionToFinallyBlock])] PREV:[jmp?(l2), jmp(l4), jmp?(l4)]
}) NEXT:[jmp?(l6 [onExceptionToFinallyBlock])] PREV:[jmp?(l2), jmp(l4 [loop entry point]), jmp?(l4 [loop entry point])]
jmp?(l6 [onExceptionToFinallyBlock]) NEXT:[r(2), r(1)] PREV:[r(try { 1 if (2 > 3) { conti..)]
r(1) NEXT:[r(2)] PREV:[jmp?(l6 [onExceptionToFinallyBlock])]
r(2) NEXT:[r(3)] PREV:[r(1)]
@@ -590,9 +590,9 @@ l5:
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)]
l8 [start finally]:
r(2) NEXT:[jmp(l4)] PREV:[jf(l7)]
r(2) NEXT:[jmp(l4 [loop entry point])] PREV:[jf(l7)]
l9 [finish finally]:
jmp(l4) NEXT:[r(try { 1 if (2 > 3) { conti..)] PREV:[r(2)]
jmp(l4 [loop entry point]) NEXT:[r(try { 1 if (2 > 3) { conti..)] PREV:[r(2)]
- jmp(l10) NEXT:[jmp(l11 [skipFinallyToErrorBlock])] PREV:[]
l7:
read (Unit) NEXT:[jmp(l11 [skipFinallyToErrorBlock])] PREV:[jf(l7)]
@@ -603,11 +603,11 @@ l6 [onExceptionToFinallyBlock]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l6 [onExceptionToFinallyBlock])]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l11 [skipFinallyToErrorBlock]:
r(2) NEXT:[jmp?(l4)] PREV:[jmp(l11 [skipFinallyToErrorBlock])]
r(2) NEXT:[jmp?(l4 [loop entry point])] PREV:[jmp(l11 [skipFinallyToErrorBlock])]
l12 [stop [d0]]:
jmp?(l4) NEXT:[r(try { 1 if (2 > 3) { conti..), read (Unit)] PREV:[r(2)]
jmp?(l4 [loop entry point]) NEXT:[r(try { 1 if (2 > 3) { conti..), read (Unit)] PREV:[r(2)]
l2:
read (Unit) NEXT:[<END>] PREV:[jmp?(l2), jmp?(l4)]
read (Unit) NEXT:[<END>] PREV:[jmp?(l2), jmp?(l4 [loop entry point])]
l1:
<END> NEXT:[<SINK>] PREV:[read (Unit)]
error:
@@ -631,9 +631,9 @@ fun t9(a : Int) {
}
---------------------
l0:
<START> NEXT:[v(a : Int)] PREV:[]
v(a : Int) NEXT:[w(a)] PREV:[<START>]
w(a) NEXT:[r(try { @ for (i in 1..a) { ..)] PREV:[v(a : Int)]
<START> NEXT:[v(a : Int)] PREV:[]
v(a : Int) NEXT:[w(a)] PREV:[<START>]
w(a) NEXT:[r(try { @ for (i in 1..a) { ..)] PREV:[v(a : Int)]
r(try {
@ for (i in 1..a) {
1
@@ -644,55 +644,55 @@ l0:
5
} finally {
2
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[w(a)]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(for (i in 1..a) { 1 if (2 ..)] PREV:[r(try { @ for (i in 1..a) { ..)]
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[w(a)]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(for (i in 1..a) { 1 if (2 ..)] PREV:[r(try { @ for (i in 1..a) { ..)]
r(for (i in 1..a) {
1
if (2 > 3) {
continue @
}
}) NEXT:[r(1)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(1) NEXT:[r(a)] PREV:[r(for (i in 1..a) { 1 if (2 ..)]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l3)] PREV:[v(i)]
}) NEXT:[r(1)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(1) NEXT:[r(a)] PREV:[r(for (i in 1..a) { 1 if (2 ..)]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l3)] PREV:[v(i)]
l4:
jmp?(l3) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l5:
l6:
r(1) NEXT:[r(2)] PREV:[jmp?(l3), jmp(l5), jmp?(l5)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l5)] PREV:[r(2 > 3)]
jmp(l5) NEXT:[r(1)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp?(l5)] PREV:[]
jmp?(l3) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l5 [loop entry point]:
l6 [body entry point]:
r(1) NEXT:[r(2)] PREV:[jmp?(l3), jmp(l5 [loop entry point]), jmp?(l5 [loop entry point])]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l5 [loop entry point])] PREV:[r(2 > 3)]
jmp(l5 [loop entry point]) NEXT:[r(1)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp?(l5 [loop entry point])] PREV:[]
l7:
read (Unit) NEXT:[jmp?(l5)] PREV:[jf(l7)]
read (Unit) NEXT:[jmp?(l5 [loop entry point])] PREV:[jf(l7)]
l8:
jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[read (Unit)]
jmp?(l5 [loop entry point]) NEXT:[r(1), read (Unit)] PREV:[read (Unit)]
l3:
read (Unit) NEXT:[r(5)] PREV:[jmp?(l3), jmp?(l5)]
r(5) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[read (Unit)]
read (Unit) NEXT:[r(5)] PREV:[jmp?(l3), jmp?(l5 [loop entry point])]
r(5) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[read (Unit)]
d0:
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[r(5)]
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[r(5)]
l2 [onExceptionToFinallyBlock]:
l10 [start finally]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l11 [finish finally]:
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l9 [skipFinallyToErrorBlock]:
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
l1:
l12 [stop [d0]]:
<END> NEXT:[<SINK>] PREV:[r(2)]
<END> NEXT:[<SINK>] PREV:[r(2)]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t10 ==
fun t10(a : Int) {
@@ -709,9 +709,9 @@ fun t10(a : Int) {
}
---------------------
l0:
<START> NEXT:[v(a : Int)] PREV:[]
v(a : Int) NEXT:[w(a)] PREV:[<START>]
w(a) NEXT:[r(try { @ for (i in 1..a) { ..)] PREV:[v(a : Int)]
<START> NEXT:[v(a : Int)] PREV:[]
v(a : Int) NEXT:[w(a)] PREV:[<START>]
w(a) NEXT:[r(try { @ for (i in 1..a) { ..)] PREV:[v(a : Int)]
r(try {
@ for (i in 1..a) {
1
@@ -721,54 +721,54 @@ l0:
}
} finally {
2
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[w(a)]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(for (i in 1..a) { 1 if (2 ..)] PREV:[r(try { @ for (i in 1..a) { ..)]
}) NEXT:[jmp?(l2 [onExceptionToFinallyBlock])] PREV:[w(a)]
jmp?(l2 [onExceptionToFinallyBlock]) NEXT:[r(2), r(for (i in 1..a) { 1 if (2 ..)] PREV:[r(try { @ for (i in 1..a) { ..)]
r(for (i in 1..a) {
1
if (2 > 3) {
continue @
}
}) NEXT:[r(1)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(1) NEXT:[r(a)] PREV:[r(for (i in 1..a) { 1 if (2 ..)]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l3)] PREV:[v(i)]
}) NEXT:[r(1)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(1) NEXT:[r(a)] PREV:[r(for (i in 1..a) { 1 if (2 ..)]
r(a) NEXT:[r(..)] PREV:[r(1)]
r(..) NEXT:[r(1..a)] PREV:[r(a)]
r(1..a) NEXT:[v(i)] PREV:[r(..)]
v(i) NEXT:[w(i)] PREV:[r(1..a)]
w(i) NEXT:[jmp?(l3)] PREV:[v(i)]
l4:
jmp?(l3) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l5:
l6:
r(1) NEXT:[r(2)] PREV:[jmp?(l3), jmp(l5), jmp?(l5)]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l5)] PREV:[r(2 > 3)]
jmp(l5) NEXT:[r(1)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp?(l5)] PREV:[]
jmp?(l3) NEXT:[read (Unit), r(1)] PREV:[w(i)]
l5 [loop entry point]:
l6 [body entry point]:
r(1) NEXT:[r(2)] PREV:[jmp?(l3), jmp(l5 [loop entry point]), jmp?(l5 [loop entry point])]
r(2) NEXT:[r(3)] PREV:[r(1)]
r(3) NEXT:[r(>)] PREV:[r(2)]
r(>) NEXT:[r(2 > 3)] PREV:[r(3)]
r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)]
jf(l7) NEXT:[read (Unit), jmp(l5 [loop entry point])] PREV:[r(2 > 3)]
jmp(l5 [loop entry point]) NEXT:[r(1)] PREV:[jf(l7)]
- jmp(l8) NEXT:[jmp?(l5 [loop entry point])] PREV:[]
l7:
read (Unit) NEXT:[jmp?(l5)] PREV:[jf(l7)]
read (Unit) NEXT:[jmp?(l5 [loop entry point])] PREV:[jf(l7)]
l8:
jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[read (Unit)]
jmp?(l5 [loop entry point]) NEXT:[r(1), read (Unit)] PREV:[read (Unit)]
l3:
read (Unit) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[jmp?(l3), jmp?(l5)]
read (Unit) NEXT:[jmp(l9 [skipFinallyToErrorBlock])] PREV:[jmp?(l3), jmp?(l5 [loop entry point])]
d0:
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[read (Unit)]
jmp(l9 [skipFinallyToErrorBlock]) NEXT:[r(2)] PREV:[read (Unit)]
l2 [onExceptionToFinallyBlock]:
l10 [start finally]:
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
r(2) NEXT:[jmp(error)] PREV:[jmp?(l2 [onExceptionToFinallyBlock])]
l11 [finish finally]:
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
jmp(error) NEXT:[<ERROR>] PREV:[r(2)]
l9 [skipFinallyToErrorBlock]:
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
r(2) NEXT:[<END>] PREV:[jmp(l9 [skipFinallyToErrorBlock])]
l1:
l12 [stop [d0]]:
<END> NEXT:[<SINK>] PREV:[r(2)]
<END> NEXT:[<SINK>] PREV:[r(2)]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t11 ==
fun t11() {
@@ -871,7 +871,7 @@ fun t13() : Int {
}
---------------------
l0:
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
r(try {
return 1
}
@@ -880,45 +880,44 @@ l0:
}
finally {
doSmth(3)
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[jmp?(), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { return 1 } catch (e:..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(3)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[v(e: UnsupportedOperationException), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { return 1 } catch (e:..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(3)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
l4 [start finally]:
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)]
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)]
l5 [finish finally]:
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
d0:
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
l2 [onException]:
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2 [onException])]
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(l6 [afterCatches])] PREV:[r(doSmth)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?(l2 [onException])]
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(l6 [afterCatches])] PREV:[r(doSmth)]
d1:
jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[r(doSmth(2))]
jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[r(doSmth(2))]
l6 [afterCatches]:
jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[jmp(l6 [afterCatches])]
jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[jmp(l6 [afterCatches])]
l3 [onExceptionToFinallyBlock]:
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
l7 [skipFinallyToErrorBlock]:
r(3) NEXT:[r(doSmth)] PREV:[jmp(l7 [skipFinallyToErrorBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
r(3) NEXT:[r(doSmth)] PREV:[jmp(l7 [skipFinallyToErrorBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
l8 [stop [d0, d1]]:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t14 ==
fun t14() : Int {
@@ -931,35 +930,34 @@ fun t14() : Int {
}
---------------------
l0:
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
r(try {
return 1
}
catch (e: UnsupportedOperationException) {
doSmth(2)
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[jmp?(), r(1)] PREV:[r(try { return 1 } catch (e:..)]
r(1) NEXT:[ret(*) l1] PREV:[jmp?(l2 [onException])]
ret(*) l1 NEXT:[<END>] PREV:[r(1)]
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[v(e: UnsupportedOperationException), r(1)] PREV:[r(try { return 1 } catch (e:..)]
r(1) NEXT:[ret(*) l1] PREV:[jmp?(l2 [onException])]
ret(*) l1 NEXT:[<END>] PREV:[r(1)]
d0:
- jmp(l3 [afterCatches]) NEXT:[<END>] PREV:[]
- jmp(l3 [afterCatches]) NEXT:[<END>] PREV:[]
l2 [onException]:
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2 [onException])]
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(l3 [afterCatches])] PREV:[r(doSmth)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?(l2 [onException])]
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(l3 [afterCatches])] PREV:[r(doSmth)]
d1:
jmp(l3 [afterCatches]) NEXT:[<END>] PREV:[r(doSmth(2))]
jmp(l3 [afterCatches]) NEXT:[<END>] PREV:[r(doSmth(2))]
l1:
l3 [afterCatches]:
l4 [stop [d0, d1]]:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, jmp(l3 [afterCatches])]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, jmp(l3 [afterCatches])]
error:
<ERROR> NEXT:[<SINK>] PREV:[]
<ERROR> NEXT:[<SINK>] PREV:[]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t15 ==
fun t15() : Int {
@@ -975,7 +973,7 @@ fun t15() : Int {
}
---------------------
l0:
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
<START> NEXT:[r(try { return 1 } catch (e:..)] PREV:[]
r(try {
return 1
}
@@ -984,47 +982,46 @@ l0:
}
finally {
doSmth(3)
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[jmp?(), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { return 1 } catch (e:..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(3)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[v(e: UnsupportedOperationException), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { return 1 } catch (e:..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(3)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
l4 [start finally]:
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)]
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)]
l5 [finish finally]:
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
d0:
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
l2 [onException]:
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2 [onException])]
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))]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?(l2 [onException])]
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))]
d1:
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
- jmp(l6 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
l6 [afterCatches]:
- jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[]
- jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[]
l3 [onExceptionToFinallyBlock]:
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
l7 [skipFinallyToErrorBlock]:
- r(3) NEXT:[r(doSmth)] PREV:[]
- r(doSmth) NEXT:[r(doSmth(3))] PREV:[]
- r(doSmth(3)) NEXT:[<END>] PREV:[]
- r(3) NEXT:[r(doSmth)] PREV:[]
- r(doSmth) NEXT:[r(doSmth(3))] PREV:[]
- r(doSmth(3)) NEXT:[<END>] PREV:[]
l1:
l8 [stop [d0, d1]]:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, ret(*) l1]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, ret(*) l1]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== t16 ==
fun t16() : Int {
@@ -1040,7 +1037,7 @@ fun t16() : Int {
}
---------------------
l0:
<START> NEXT:[r(try { doSmth(1) } catch (e..)] PREV:[]
<START> NEXT:[r(try { doSmth(1) } catch (e..)] PREV:[]
r(try {
doSmth(1)
}
@@ -1049,45 +1046,44 @@ l0:
}
finally {
doSmth(3)
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[jmp?(), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { doSmth(1) } catch (e..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(1))] PREV:[r(1)]
r(doSmth(1)) NEXT:[jmp(l4 [afterCatches])] PREV:[r(doSmth)]
}) NEXT:[jmp?(l2 [onException])] PREV:[<START>]
jmp?(l2 [onException]) NEXT:[v(e: UnsupportedOperationException), jmp?(l3 [onExceptionToFinallyBlock])] PREV:[r(try { doSmth(1) } catch (e..)]
jmp?(l3 [onExceptionToFinallyBlock]) NEXT:[r(3), r(1)] PREV:[jmp?(l2 [onException])]
r(1) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(1))] PREV:[r(1)]
r(doSmth(1)) NEXT:[jmp(l4 [afterCatches])] PREV:[r(doSmth)]
d0:
jmp(l4 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[r(doSmth(1))]
jmp(l4 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[r(doSmth(1))]
l2 [onException]:
jmp?() NEXT:[v(e: UnsupportedOperationException)] PREV:[jmp?(l2 [onException])]
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)]
v(e: UnsupportedOperationException) NEXT:[w(e)] PREV:[jmp?(l2 [onException])]
w(e) NEXT:[r(2)] PREV:[v(e: UnsupportedOperationException)]
r(2) NEXT:[r(3)] PREV:[w(e)]
l5 [start finally]:
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)]
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)]
l6 [finish finally]:
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
ret(*) l1 NEXT:[<END>] PREV:[r(doSmth(3))]
d1:
- jmp(l4 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
- jmp(l4 [afterCatches]) NEXT:[jmp(l7 [skipFinallyToErrorBlock])] PREV:[]
l4 [afterCatches]:
jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[jmp(l4 [afterCatches])]
jmp(l7 [skipFinallyToErrorBlock]) NEXT:[r(3)] PREV:[jmp(l4 [afterCatches])]
l3 [onExceptionToFinallyBlock]:
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
r(3) NEXT:[r(doSmth)] PREV:[jmp?(l3 [onExceptionToFinallyBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[jmp(error)] PREV:[r(doSmth)]
jmp(error) NEXT:[<ERROR>] PREV:[r(doSmth(3))]
l7 [skipFinallyToErrorBlock]:
r(3) NEXT:[r(doSmth)] PREV:[jmp(l7 [skipFinallyToErrorBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
r(3) NEXT:[r(doSmth)] PREV:[jmp(l7 [skipFinallyToErrorBlock])]
r(doSmth) NEXT:[r(doSmth(3))] PREV:[r(3)]
r(doSmth(3)) NEXT:[<END>] PREV:[r(doSmth)]
l1:
l8 [stop [d0, d1]]:
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
<END> NEXT:[<SINK>] PREV:[ret(*) l1, r(doSmth(3))]
error:
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
<ERROR> NEXT:[<SINK>] PREV:[jmp(error)]
sink:
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
<SINK> NEXT:[] PREV:[<ERROR>, <END>]
=====================
== doSmth ==
fun doSmth(i: Int) {