Files
kotlin-fork/compiler/testData/codegen/box/controlflow/break.kt
T
2024-02-26 13:38:49 +00:00

81 lines
1.3 KiB
Kotlin
Vendored

/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
// JVM_ABI_K1_K2_DIFF: KT-63864
// WITH_STDLIB
import kotlin.test.*
val sb = StringBuilder()
fun foo() {
var i = 0
l1@while (true) {
sb.appendLine("foo@l1")
try {
l2@while (true) {
if ((i++ % 2) == 0) continue@l2
sb.appendLine("foo@l2")
if (i > 4) break@l1
}
} finally {
}
}
}
fun bar() {
var i = 0
l1@do {
try {
sb.appendLine("bar@l1")
throw Exception()
} catch (e: Exception) {
l2@do {
if ((i++ % 2) == 0) continue@l2
sb.appendLine("bar@l2")
if (i > 4) break@l1
} while (true)
}
} while (true)
}
fun qux() {
l1@for (i in 1..6) {
t1@try {
sb.appendLine("qux@t1")
throw Exception()
}
finally {
l2@ for (j in 1..6) {
if ((j % 2) == 0) continue@l2
sb.appendLine("qux@l2")
if (j > 4) break@l1
}
}
}
}
fun box(): String {
foo()
bar()
qux()
assertEquals("""
foo@l1
foo@l2
foo@l2
foo@l2
bar@l1
bar@l2
bar@l2
bar@l2
qux@t1
qux@l2
qux@l2
qux@l2
""".trimIndent(), sb.toString())
return "OK"
}