[NI] Fix recording info about captured local variables

This commit is contained in:
Mikhail Zarechenskiy
2020-02-10 08:59:38 +03:00
parent 7f6c03c926
commit 1acce46133
8 changed files with 99 additions and 4 deletions
@@ -0,0 +1,44 @@
// WITH_RUNTIME
// WITH_COROUTINES
// IGNORE_BACKEND_FIR: JVM_IR
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
import kotlin.test.*
fun testLaziness() {
var sharedVar = -2
val result = sequence {
while (true) {
when (sharedVar) {
-1 -> return@sequence
-2 -> error("Invalid state: -2")
else -> yield(sharedVar)
}
}
}
val iterator = result.iterator()
sharedVar = 1
assertTrue(iterator.hasNext())
assertEquals(1, iterator.next())
sharedVar = 2
assertTrue(iterator.hasNext())
assertEquals(2, iterator.next())
sharedVar = 3
assertTrue(iterator.hasNext())
assertEquals(3, iterator.next())
sharedVar = -1
assertFalse(iterator.hasNext())
assertFailsWith<NoSuchElementException> { iterator.next() }
}
fun box(): String {
testLaziness()
return "OK"
}