Files
kotlin-fork/compiler/testData/codegen/boxWithStdlib/regressions/objectCaptureOuterConstructorProperty.kt
T
Alexander Udalov 35c7c4afd8 Fix capturing outer this in some cases in JVM codegen
When property initializer of some inner entity (e.g. anonymous object) contains
a reference to some outer entity (say, a property of the outer class), we need
to make sure we called "lookupInContext" on this entity's owner class, so that
"setCaptureThis" was called on the appropriate closure

 #KT-4176 Fixed
2014-02-12 19:17:55 +04:00

30 lines
805 B
Kotlin

import kotlin.support.*
trait Stream<T> {
fun iterator(): Iterator<T>
}
class ZippingStream<T1, T2>(val stream1: Stream<T1>, val stream2: Stream<T2>) : Stream<Pair<T1,T2>> {
override fun iterator(): Iterator<Pair<T1,T2>> = object : AbstractIterator<Pair<T1,T2>>() {
val iterator1 = stream1.iterator()
val iterator2 = stream2.iterator()
override fun computeNext() {
if (iterator1.hasNext() && iterator2.hasNext()) {
setNext(iterator1.next() to iterator2.next())
} else {
done()
}
}
}
}
object EmptyStream : Stream<Nothing> {
override fun iterator() = listOf<Nothing>().iterator()
}
fun box(): String {
ZippingStream(EmptyStream, EmptyStream).iterator().hasNext()
return "OK"
}