Files
kotlin-fork/compiler/testData/ir/irText/expressions/breakContinueInWhen.fir.kt.txt
T
Kirill Rakhman 3b9724d20e [FIR] Desugar increment/decrement in body resolve phase
The expression needs to be resolved first to determine if there is a
receiver that needs to be extracted to a temporary variable. Also, the
special case for prefix increment/decrement on local variable without
delegates requires resolution to check if the variable is local.

^KT-56771 Fixed
^KT-56659 Fixed
2023-03-02 10:19:57 +00:00

77 lines
1.5 KiB
Plaintext
Vendored

fun testBreakFor() {
val xs: IntArray = IntArray(size = 10, init = local fun <anonymous>(i: Int): Int {
return i
}
)
var k: Int = 0
{ // BLOCK
val <iterator>: IntIterator = xs.iterator()
while (<iterator>.hasNext()) { // BLOCK
val x: Int = <iterator>.next()
when {
greater(arg0 = k, arg1 = 2) -> break
}
}
}
}
fun testBreakWhile() {
var k: Int = 0
while (less(arg0 = k, arg1 = 10)) when {
greater(arg0 = k, arg1 = 2) -> break
}
}
fun testBreakDoWhile() {
var k: Int = 0
{ // BLOCK
dowhen {
greater(arg0 = k, arg1 = 2) -> break
} while (less(arg0 = k, arg1 = 10))
}
}
fun testContinueFor() {
val xs: IntArray = IntArray(size = 10, init = local fun <anonymous>(i: Int): Int {
return i
}
)
var k: Int = 0
{ // BLOCK
val <iterator>: IntIterator = xs.iterator()
while (<iterator>.hasNext()) { // BLOCK
val x: Int = <iterator>.next()
when {
greater(arg0 = k, arg1 = 2) -> continue
}
}
}
}
fun testContinueWhile() {
var k: Int = 0
while (less(arg0 = k, arg1 = 10)) when {
greater(arg0 = k, arg1 = 2) -> continue
}
}
fun testContinueDoWhile() {
var k: Int = 0
var s: String = ""
{ // BLOCK
do// COMPOSITE {
{ // BLOCK
k = k.inc()
k
} /*~> Unit */
when {
greater(arg0 = k, arg1 = 2) -> continue
}
s = s.plus(other = k + ";")
// } while (less(arg0 = k, arg1 = 10))
}
when {
EQEQ(arg0 = s, arg1 = "1;2;").not() -> throw AssertionError(p0 = s)
}
}