diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionHandlers.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionHandlers.kt index 276a6386352..999e21d4626 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionHandlers.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionHandlers.kt @@ -731,23 +731,26 @@ internal class WithIndexHandler(context: CommonBackendContext, private val visit } } -/** Builds a [HeaderInfo] for iterables not handled by more specialized handlers. */ -internal class DefaultIterableHandler(private val context: CommonBackendContext) : ExpressionHandler { +/** Builds a [HeaderInfo] for Iterables not handled by more specialized handlers. */ +internal open class DefaultIterableHandler(private val context: CommonBackendContext) : ExpressionHandler { - override fun matchIterable(expression: IrExpression) = true + protected open val iterableClassSymbol = context.ir.symbols.iterable + + override fun matchIterable(expression: IrExpression) = expression.type.isSubtypeOfClass(iterableClassSymbol) override fun build(expression: IrExpression, scopeOwner: IrSymbol): HeaderInfo? = with(context.createIrBuilder(scopeOwner, expression.startOffset, expression.endOffset)) { - val iterableClass = expression.type.getClass()!! - val iterator = - irCall(iterableClass.functions.single { - it.name == OperatorNameConventions.ITERATOR && - it.valueParameters.isEmpty() - }).apply { - dispatchReceiver = expression - } + // The lowering operates on subtypes of Iterable. Therefore, the IrType could be + // a type parameter bounded by Iterable. When that is the case, we cannot get + // the class from the type and instead uses the Iterable.iterator() function. + val iteratorFun = expression.type.getClass()?.functions?.single { + it.name == OperatorNameConventions.ITERATOR && + it.valueParameters.isEmpty() + } ?: iterableClassSymbol.getSimpleFunction(OperatorNameConventions.ITERATOR.asString())!!.owner IterableHeaderInfo( - scope.createTmpVariable(iterator, nameHint = "iterator") + scope.createTmpVariable(irCall(iteratorFun).apply { dispatchReceiver = expression }, nameHint = "iterator") ) } } + +// TODO: Handle Sequences by extending DefaultIterableHandler. diff --git a/compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt b/compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt new file mode 100644 index 00000000000..d4d2e3ddcb6 --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt @@ -0,0 +1,20 @@ +// IGNORE_BACKEND_FIR: JVM_IR +// KJS_WITH_FULL_RUNTIME +// WITH_RUNTIME + +val cs: CharSequence = "abcd" + +fun test(charSequence: T): String { + val s = StringBuilder() + + for ((index, x) in charSequence.withIndex()) { + s.append("$index:$x;") + } + + return s.toString() +} + +fun box(): String { + val ss = test(cs) + return if (ss == "0:a;1:b;2:c;3:d;") "OK" else "fail: '$ss'" +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt b/compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt new file mode 100644 index 00000000000..e1fb89f1d23 --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt @@ -0,0 +1,20 @@ +// IGNORE_BACKEND_FIR: JVM_IR +// KJS_WITH_FULL_RUNTIME +// WITH_RUNTIME + +val xs = listOf("a", "b", "c", "d") + +fun > test(iterable: T): String { + val s = StringBuilder() + + for ((index, x) in iterable.withIndex()) { + s.append("$index:$x;") + } + + return s.toString() +} + +fun box(): String { + val ss = test(xs) + return if (ss == "0:a;1:b;2:c;3:d;") "OK" else "fail: '$ss'" +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt b/compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt new file mode 100644 index 00000000000..bb9c48ad7d8 --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt @@ -0,0 +1,20 @@ +// IGNORE_BACKEND_FIR: JVM_IR +// KJS_WITH_FULL_RUNTIME +// WITH_RUNTIME + +val xs = listOf("a", "b", "c", "d").asSequence() + +fun > test(sequence: T): String { + val s = StringBuilder() + + for ((index, x) in sequence.withIndex()) { + s.append("$index:$x;") + } + + return s.toString() +} + +fun box(): String { + val ss = test(xs) + return if (ss == "0:a;1:b;2:c;3:d;") "OK" else "fail: '$ss'" +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt new file mode 100644 index 00000000000..878ad03269b --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt @@ -0,0 +1,16 @@ +fun > test(iterable: T): String { + val s = StringBuilder() + + for ((index, x) in iterable.withIndex()) { + s.append("$index:$x;") + } + + return s.toString() +} + +// 0 withIndex +// 1 iterator +// 1 hasNext +// 1 next +// 0 component1 +// 0 component2 diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt index 85dfef60a20..1d695b13574 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. val xs = listOf().asSequence() fun box(): String { diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt new file mode 100644 index 00000000000..45e5d15ae29 --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt @@ -0,0 +1,18 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. +fun > test(sequence: T): String { + val s = StringBuilder() + + for ((index, x) in sequence.withIndex()) { + s.append("$index:$x;") + } + + return s.toString() +} + +// 0 withIndex +// 1 iterator +// 1 hasNext +// 1 next +// 0 component1 +// 0 component2 diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt index 8265acf47dd..52e143652ee 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. val xs = listOf("a", "b", "c", "d").asSequence() fun box(): String { diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt index 1b4816399d1..24efdbdba13 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoElementVar.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. val xs = listOf("a", "b", "c", "d").asSequence() fun box(): String { diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt index 6a36dcd46d6..0ae5164815e 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexNoIndexVar.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. val xs = listOf("a", "b", "c", "d").asSequence() fun box(): String { diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt index 85e19c93ceb..2ee840bde14 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexThrowsCME.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. // FULL_JDK val xsl = arrayListOf("a", "b", "c", "d") diff --git a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt index bcaf1e3b5af..a22e78d60f6 100644 --- a/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt +++ b/compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndexWithExplicitlyTypedIndexVariable.kt @@ -1,3 +1,5 @@ +// IGNORE_BACKEND: JVM_IR +// TODO: Handle Sequences by extending DefaultIterableHandler. val xs = listOf("a", "b", "c", "d").asSequence() fun useAny(x: Any) {} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 6432c3a569e..af90f56610d 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -5399,6 +5399,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -5472,6 +5477,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -5530,6 +5540,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java index 16b31b9e893..a588fad5491 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java @@ -1986,6 +1986,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInListWithIndex.kt") public void testForInListWithIndex() throws Exception { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInListWithIndex.kt"); @@ -2175,6 +2180,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 8388dfa6785..120b1febeca 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -5399,6 +5399,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -5472,6 +5477,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -5530,6 +5540,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index 99ae27f3955..dcc14d0dd13 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -5369,6 +5369,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -5442,6 +5447,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -5500,6 +5510,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 8248ae085f2..c5b47522f83 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -5369,6 +5369,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -5442,6 +5447,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -5500,6 +5510,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java index bc3e5e0e8ea..ce5296eec99 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java @@ -1941,6 +1941,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInListWithIndex.kt") public void testForInListWithIndex() throws Exception { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInIterableWithIndex/forInListWithIndex.kt"); @@ -2130,6 +2135,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/bytecodeText/forLoop/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 4c58a34a34b..ddbc943cd6f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -4499,6 +4499,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -4572,6 +4577,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -4625,6 +4635,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 86824569a51..845225682a4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -4509,6 +4509,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSeqWithIndexStops.kt"); } + @TestMetadata("forInCharSequenceTypeParameterWithIndex.kt") + public void testForInCharSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInCharSequenceWithIndex.kt") public void testForInCharSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInCharSequenceWithIndex/forInCharSequenceWithIndex.kt"); @@ -4582,6 +4587,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInEmptyListWithIndex.kt"); } + @TestMetadata("forInIterableTypeParameterWithIndex.kt") + public void testForInIterableTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableTypeParameterWithIndex.kt"); + } + @TestMetadata("forInIterableWithIndexCheckSideEffects.kt") public void testForInIterableWithIndexCheckSideEffects() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInIterableWithIndex/forInIterableWithIndexCheckSideEffects.kt"); @@ -4635,6 +4645,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInEmptySequenceWithIndex.kt"); } + @TestMetadata("forInSequenceTypeParameterWithIndex.kt") + public void testForInSequenceTypeParameterWithIndex() throws Exception { + runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceTypeParameterWithIndex.kt"); + } + @TestMetadata("forInSequenceWithIndex.kt") public void testForInSequenceWithIndex() throws Exception { runTest("compiler/testData/codegen/box/controlStructures/forInSequenceWithIndex/forInSequenceWithIndex.kt");