Allow 'break' and 'continue' inside 'when' in 1.4+
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
// !LANGUAGE: +AllowBreakAndContinueInsideWhen
|
||||
|
||||
fun breakContinueInWhen(i: Int) {
|
||||
for (y in 0..10) {
|
||||
when(i) {
|
||||
0 -> continue
|
||||
1 -> 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 -> continue
|
||||
1 -> break
|
||||
2 -> {
|
||||
while (j > 0) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun breakContinueInWhenWithDoWhile(i: Int, j: Int) {
|
||||
do {
|
||||
when (i) {
|
||||
0 -> continue
|
||||
1 -> 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun testBreakContinueInWhenInWhileCondition() {
|
||||
var i = 0
|
||||
while (
|
||||
when (i) {
|
||||
1 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>break<!>
|
||||
2 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>continue<!>
|
||||
else -> true
|
||||
}
|
||||
) {
|
||||
++i
|
||||
}
|
||||
}
|
||||
|
||||
fun testBreakContinueInWhenInDoWhileCondition() {
|
||||
var i = 0
|
||||
do {
|
||||
++i
|
||||
} while (
|
||||
when (i) {
|
||||
1 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>break<!>
|
||||
2 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>continue<!>
|
||||
else -> true
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun testBreakContinueInWhenInForIteratorExpression(xs: List<Any>, i: Int) {
|
||||
for (x in when (i) {
|
||||
1 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>break<!>
|
||||
2 -> <!BREAK_OR_CONTINUE_OUTSIDE_A_LOOP!>continue<!>
|
||||
else -> xs
|
||||
}) {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package
|
||||
|
||||
public fun breakContinueInWhen(/*0*/ i: kotlin.Int): kotlin.Unit
|
||||
public fun breakContinueInWhenWithDoWhile(/*0*/ i: kotlin.Int, /*1*/ j: kotlin.Int): kotlin.Unit
|
||||
public fun breakContinueInWhenWithWhile(/*0*/ i: kotlin.Int, /*1*/ j: kotlin.Int): kotlin.Unit
|
||||
public fun labeledBreakContinue(/*0*/ i: kotlin.Int): kotlin.Unit
|
||||
public fun testBreakContinueInWhenInDoWhileCondition(): kotlin.Unit
|
||||
public fun testBreakContinueInWhenInForIteratorExpression(/*0*/ xs: kotlin.collections.List<kotlin.Any>, /*1*/ i: kotlin.Int): kotlin.Unit
|
||||
public fun testBreakContinueInWhenInWhileCondition(): kotlin.Unit
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: -AllowBreakAndContinueInsideWhen
|
||||
|
||||
fun breakContinueInWhen(i: Int) {
|
||||
for (y in 0..10) {
|
||||
when(i) {
|
||||
Reference in New Issue
Block a user