Fix data flow info after inner loops with continue-outer

ControlStructureTypingVisitor.containsBreak() is refined and now also takes
into account continue to outer loops
This commit is contained in:
Alexander Udalov
2012-11-16 15:42:14 +04:00
parent d1de446ae0
commit 6c7b32dc03
3 changed files with 62 additions and 9 deletions
@@ -0,0 +1,32 @@
fun whileLoop(x: Int?) {
@outer while (x != 0) {
while (x != 1) {
if (x == 2) continue @outer
}
<!TYPE_MISMATCH!>x<!> : Int
}
x : Int
}
fun doWhileLoop(x: Int?) {
@outer while (x != 0) {
do {
if (x == 2) continue @outer
} while (x == null)
<!TYPE_MISMATCH!>x<!> : Int
}
x : Int
}
fun whileLoopContinueInnerOuter(x: Int?) {
@outer while (x != 0) {
@inner while (x != 1) {
while (x != 2) {
if (x == 3) continue @inner
}
<!TYPE_MISMATCH!>x<!> : Int
}
x : Int
}
x : Int
}