JVM: Always invoke get()/charAt() in optimized for-loop over

CharSequence.withIndex(), even if element variable is unused in
destructuring declaration.

#KT-34779 Fixed
This commit is contained in:
Mark Punzalan
2019-11-05 23:42:29 -08:00
committed by Dmitry Petrov
parent 411dc5d60e
commit f444702cf3
16 changed files with 506 additions and 4 deletions
@@ -63,12 +63,14 @@ class CharSequenceWithIndexForLoopGenerator(
}
override fun assignLoopParametersNextValues() {
v.load(charSeqVar, charSeqType)
v.load(indexVar, Type.INT_TYPE)
v.invokeinterface("java/lang/CharSequence", "charAt", "(I)C")
if (elementLoopComponent != null) {
v.load(charSeqVar, charSeqType)
v.load(indexVar, Type.INT_TYPE)
v.invokeinterface("java/lang/CharSequence", "charAt", "(I)C")
StackValue.local(elementLoopComponent.parameterVar, elementLoopComponent.parameterType)
.store(StackValue.onStack(Type.CHAR_TYPE), v)
} else {
v.pop()
}
}
@@ -0,0 +1,30 @@
// 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 ((index, x) in cs.withIndex()) {
s.append("$index:$x;")
}
val ss = s.toString()
if (ss != "0:a;1:b;2:c;3: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"
}
@@ -0,0 +1,30 @@
// 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 ((index, _) in cs.withIndex()) {
s.append("$index;")
}
val ss = s.toString()
if (ss != "0;1;2;3;") 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"
}
@@ -0,0 +1,29 @@
// 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"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingIterable<out T>(private val s: Iterable<T>) : Iterable<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingIterableIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingIterableIterator(s.iterator())
}
val xs = CountingIterable(listOf("a", "b", "c", "d"))
fun box(): String {
val s = StringBuilder()
for ((index, x) in xs.withIndex()) {
s.append("$index:$x;")
}
val ss = s.toString()
if (ss != "0:a;1:b;2:c;3:d;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingIterable<out T>(private val s: Iterable<T>) : Iterable<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingIterableIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingIterableIterator(s.iterator())
}
val xs = CountingIterable(listOf("a", "b", "c", "d"))
fun box(): String {
val s = StringBuilder()
for ((index, _) in xs.withIndex()) {
s.append("$index;")
}
val ss = s.toString()
if (ss != "0;1;2;3;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingIterable<out T>(private val s: Iterable<T>) : Iterable<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingIterableIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingIterableIterator(s.iterator())
}
val xs = CountingIterable(listOf("a", "b", "c", "d"))
fun box(): String {
val s = StringBuilder()
for ((_, x) in xs.withIndex()) {
s.append("$x;")
}
val ss = s.toString()
if (ss != "a;b;c;d;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingSequence<out T>(private val s: Sequence<T>) : Sequence<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingSequenceIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingSequenceIterator(s.iterator())
}
val xs = CountingSequence(listOf("a", "b", "c", "d").asSequence())
fun box(): String {
val s = StringBuilder()
for ((index, x) in xs.withIndex()) {
s.append("$index:$x;")
}
val ss = s.toString()
if (ss != "0:a;1:b;2:c;3:d;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingSequence<out T>(private val s: Sequence<T>) : Sequence<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingSequenceIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingSequenceIterator(s.iterator())
}
val xs = CountingSequence(listOf("a", "b", "c", "d").asSequence())
fun box(): String {
val s = StringBuilder()
for ((index, _) in xs.withIndex()) {
s.append("$index;")
}
val ss = s.toString()
if (ss != "0;1;2;3;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -0,0 +1,31 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
class CountingSequence<out T>(private val s: Sequence<T>) : Sequence<T> {
var hasNextCtr = 0
var nextCtr = 0
inner class CountingSequenceIterator(private val it: Iterator<T>) : Iterator<T> {
override fun hasNext() = it.hasNext().also { hasNextCtr++ }
override fun next() = it.next().also { nextCtr++ }
}
override fun iterator() = CountingSequenceIterator(s.iterator())
}
val xs = CountingSequence(listOf("a", "b", "c", "d").asSequence())
fun box(): String {
val s = StringBuilder()
for ((_, x) in xs.withIndex()) {
s.append("$x;")
}
val ss = s.toString()
if (ss != "a;b;c;d;") return "fail: '$ss'"
if (xs.hasNextCtr != 5) return "hasNextCtr != 5, was: '${xs.hasNextCtr}'"
if (xs.nextCtr != 4) return "nextCtr != 4, was: '${xs.nextCtr}'"
return "OK"
}
@@ -19,4 +19,4 @@ fun box(): String {
// 0 component1
// 0 component2
// 1 length
// 0 charAt
// 1 charAt
@@ -5379,6 +5379,21 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt");
}
@TestMetadata("forInCharSequenceWithIndexCheckSideEffects.kt")
public void testForInCharSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInEmptyStringWithIndex.kt")
public void testForInEmptyStringWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInEmptyStringWithIndex.kt");
@@ -5422,6 +5437,21 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt");
}
@TestMetadata("forInIterableWithIndexCheckSideEffects.kt")
public void testForInIterableWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoElementVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInListWithIndex.kt")
public void testForInListWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInListWithIndex.kt");
@@ -5470,16 +5500,31 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");
}
@TestMetadata("forInSequenceWithIndexCheckSideEffects.kt")
public void testForInSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVar.kt")
public void testForInSequenceWithIndexNoElementVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVar.kt")
public void testForInSequenceWithIndexNoIndexVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexThrowsCME.kt")
public void testForInSequenceWithIndexThrowsCME() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt");
@@ -5379,6 +5379,21 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt");
}
@TestMetadata("forInCharSequenceWithIndexCheckSideEffects.kt")
public void testForInCharSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInEmptyStringWithIndex.kt")
public void testForInEmptyStringWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInEmptyStringWithIndex.kt");
@@ -5422,6 +5437,21 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt");
}
@TestMetadata("forInIterableWithIndexCheckSideEffects.kt")
public void testForInIterableWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoElementVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInListWithIndex.kt")
public void testForInListWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInListWithIndex.kt");
@@ -5470,16 +5500,31 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");
}
@TestMetadata("forInSequenceWithIndexCheckSideEffects.kt")
public void testForInSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVar.kt")
public void testForInSequenceWithIndexNoElementVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVar.kt")
public void testForInSequenceWithIndexNoIndexVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexThrowsCME.kt")
public void testForInSequenceWithIndexThrowsCME() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt");
@@ -5349,6 +5349,21 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt");
}
@TestMetadata("forInCharSequenceWithIndexCheckSideEffects.kt")
public void testForInCharSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInEmptyStringWithIndex.kt")
public void testForInEmptyStringWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInEmptyStringWithIndex.kt");
@@ -5392,6 +5407,21 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt");
}
@TestMetadata("forInIterableWithIndexCheckSideEffects.kt")
public void testForInIterableWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoElementVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInListWithIndex.kt")
public void testForInListWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInListWithIndex.kt");
@@ -5440,16 +5470,31 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");
}
@TestMetadata("forInSequenceWithIndexCheckSideEffects.kt")
public void testForInSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVar.kt")
public void testForInSequenceWithIndexNoElementVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVar.kt")
public void testForInSequenceWithIndexNoIndexVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexThrowsCME.kt")
public void testForInSequenceWithIndexThrowsCME() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt");
@@ -4489,6 +4489,21 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt");
}
@TestMetadata("forInCharSequenceWithIndexCheckSideEffects.kt")
public void testForInCharSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInEmptyStringWithIndex.kt")
public void testForInEmptyStringWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInEmptyStringWithIndex.kt");
@@ -4532,6 +4547,21 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt");
}
@TestMetadata("forInIterableWithIndexCheckSideEffects.kt")
public void testForInIterableWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoElementVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInListWithIndex.kt")
public void testForInListWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInListWithIndex.kt");
@@ -4575,16 +4605,31 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");
}
@TestMetadata("forInSequenceWithIndexCheckSideEffects.kt")
public void testForInSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVar.kt")
public void testForInSequenceWithIndexNoElementVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVar.kt")
public void testForInSequenceWithIndexNoIndexVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt")
public void testForInSequenceWithIndexWithExplicitlyTypedIndexVariable() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt");
@@ -4499,6 +4499,21 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt");
}
@TestMetadata("forInCharSequenceWithIndexCheckSideEffects.kt")
public void testForInCharSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInCharSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInEmptyStringWithIndex.kt")
public void testForInEmptyStringWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInEmptyStringWithIndex.kt");
@@ -4542,6 +4557,21 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt");
}
@TestMetadata("forInIterableWithIndexCheckSideEffects.kt")
public void testForInIterableWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoElementVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInIterableWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInIterableWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInListWithIndex.kt")
public void testForInListWithIndex() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInListWithIndex.kt");
@@ -4585,16 +4615,31 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");
}
@TestMetadata("forInSequenceWithIndexCheckSideEffects.kt")
public void testForInSequenceWithIndexCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVar.kt")
public void testForInSequenceWithIndexNoElementVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoElementVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoElementVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoElementVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVar.kt")
public void testForInSequenceWithIndexNoIndexVar() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt");
}
@TestMetadata("forInSequenceWithIndexNoIndexVarCheckSideEffects.kt")
public void testForInSequenceWithIndexNoIndexVarCheckSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVarCheckSideEffects.kt");
}
@TestMetadata("forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt")
public void testForInSequenceWithIndexWithExplicitlyTypedIndexVariable() throws Exception {
runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt");