c22dfeaf82
'fun CharSequence.iterator()' is an extension function, so one can overload it with custom implementation. Other "predefined" containers such as arrays and ranges have member 'fun iterator()', so these containers are not affected. Check that 'iterator' call corresponds to an extension function 'iterator' defined in package 'kotlin.text' with a receiver of type 'kotlin.CharSequence'. #KT-24156 Fixed
25 lines
590 B
Kotlin
Vendored
25 lines
590 B
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
|
|
operator fun String.iterator(): IntIterator = object : IntIterator() {
|
|
private var index = 0
|
|
|
|
override fun nextInt() = codePointAt(index).apply {
|
|
index += Character.charCount(this)
|
|
}
|
|
|
|
override fun hasNext(): Boolean = index < length
|
|
}
|
|
|
|
fun String.collectInts(): List<Int> {
|
|
val result = ArrayList<Int>()
|
|
for (c in this) {
|
|
result.add(c)
|
|
}
|
|
return result
|
|
}
|
|
|
|
fun box(): String {
|
|
val ints = String(Character.toChars(127849)).collectInts()
|
|
return if (ints == listOf(127849)) "OK" else "Fail: $ints"
|
|
} |