report 'break' and 'continue' inside 'when' as errors (even if 'when' is nested in a loop)

This commit is contained in:
Dmitry Jemerov
2015-03-30 20:44:31 +02:00
committed by Andrey Breslav
parent 8ab12e217d
commit 252c4118eb
8 changed files with 77 additions and 2 deletions
@@ -82,4 +82,4 @@ class C {
}
a<!UNSAFE_CALL!>.<!>compareTo("2")
}
}
}
@@ -1,4 +1,4 @@
package
package
internal final class C {
public constructor C()
@@ -0,0 +1,55 @@
fun breakContinueInWhen(i: Int) {
for (y in 0..10) {
when(i) {
0 -> <!BREAK_OR_CONTINUE_IN_WHEN!>continue<!>
1 -> <!BREAK_OR_CONTINUE_IN_WHEN!>break<!>
2 -> {
for(z in 0..10) {
break
}
for(w in 0..10) {
continue
}
}
}
}
}
fun breakContinueInWhenWithWhile(i: Int, j: Int) {
while (i > 0) {
when (i) {
0 -> <!BREAK_OR_CONTINUE_IN_WHEN!>continue<!>
1 -> <!BREAK_OR_CONTINUE_IN_WHEN!>break<!>
2 -> {
while (j > 0) {
break
}
}
}
}
}
fun breakContinueInWhenWithDoWhile(i: Int, j: Int) {
do {
when (i) {
0 -> <!BREAK_OR_CONTINUE_IN_WHEN!>continue<!>
1 -> <!BREAK_OR_CONTINUE_IN_WHEN!>break<!>
2 -> {
do {
if (j == 5) break
if (j == 10) continue
} while (j > 0)
}
}
} while (i > 0)
}
fun labeledBreakContinue(i: Int) {
@outer for (y in 0..10) {
when (i) {
0 -> continue@outer
1 -> break@outer
}
}
}
@@ -0,0 +1,6 @@
package
internal fun breakContinueInWhen(/*0*/ i: kotlin.Int): kotlin.Unit
internal fun breakContinueInWhenWithDoWhile(/*0*/ i: kotlin.Int, /*1*/ j: kotlin.Int): kotlin.Unit
internal fun breakContinueInWhenWithWhile(/*0*/ i: kotlin.Int, /*1*/ j: kotlin.Int): kotlin.Unit
internal fun labeledBreakContinue(/*0*/ i: kotlin.Int): kotlin.Unit