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:
committed by
Dmitry Petrov
parent
411dc5d60e
commit
f444702cf3
+5
-3
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+30
@@ -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"
|
||||
}
|
||||
+30
@@ -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"
|
||||
}
|
||||
+29
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+31
@@ -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"
|
||||
}
|
||||
+1
-1
@@ -19,4 +19,4 @@ fun box(): String {
|
||||
// 0 component1
|
||||
// 0 component2
|
||||
// 1 length
|
||||
// 0 charAt
|
||||
// 1 charAt
|
||||
|
||||
+45
@@ -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");
|
||||
|
||||
+45
@@ -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");
|
||||
|
||||
+45
@@ -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");
|
||||
|
||||
Generated
+45
@@ -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");
|
||||
|
||||
+45
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user