Files
kotlin/compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt
Mikhail Glukhikh e7e80be34a [FIR2IR] Populate overridden symbols even for !isOverride
Before this commit we considered !isOverride as a sign that
function / field / accessor has no overridden symbols.
However, it's false for deserialized, because isOverride
is always false there.

This commit fixes 68 BB tests but breaks 25 BB tests (not yet muted)
2020-05-14 13:40:36 +03:00

29 lines
741 B
Kotlin
Vendored

// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingString(private val s: String) : CharSequence {
var lengthCtr = 0
var getCtr = 0
override val length: Int
get() = s.length.also { lengthCtr++ }
override fun subSequence(startIndex: Int, endIndex: Int) = TODO()
override fun get(index: Int) = s.get(index).also { getCtr++ }
}
val cs = CountingString("abcd")
fun box(): String {
val s = StringBuilder()
for ((_, x) in cs.withIndex()) {
s.append("$x;")
}
val ss = s.toString()
if (ss != "a;b;c;d;") return "fail: '$ss'"
if (cs.lengthCtr != 5) return "lengthCtr != 5, was: '${cs.lengthCtr}'"
if (cs.getCtr != 4) return "getCtr != 4, was: '${cs.getCtr}'"
return "OK"
}