diff --git a/compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt b/compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt new file mode 100644 index 00000000000..4d776ba833e --- /dev/null +++ b/compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt @@ -0,0 +1,23 @@ +// WITH_RUNTIME + +import kotlin.test.assertEquals + +inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int { + for (index in indices.reversed()) { + if (predicate(this[index])) { + return index + } + } + return -1 +} + +val ints = arrayOf(1, 2, 3, 2, 1) + +fun box(): String { + assertEquals(-1, ints.indexOfLast { it == 4 }) + assertEquals(4, ints.indexOfLast { it == 1 }) + assertEquals(3, ints.indexOfLast { it == 2 }) + assertEquals(2, ints.indexOfLast { it == 3 }) + assertEquals(-1, ints.indexOfLast { it == 0 }) + return "OK" +} \ No newline at end of file diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 02598bdc049..af9f709ff1d 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -13723,6 +13723,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("indexOfLast.kt") + public void testIndexOfLast() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt"); + doTest(fileName); + } + @TestMetadata("kt12983_forInGenericArrayIndices.kt") public void testKt12983_forInGenericArrayIndices() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/kt12983_forInGenericArrayIndices.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 58d52ce4574..88a504e0d9d 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -13723,6 +13723,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("indexOfLast.kt") + public void testIndexOfLast() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt"); + doTest(fileName); + } + @TestMetadata("kt12983_forInGenericArrayIndices.kt") public void testKt12983_forInGenericArrayIndices() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/kt12983_forInGenericArrayIndices.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index f0544870b09..520d7899580 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -13723,6 +13723,12 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes doTest(fileName); } + @TestMetadata("indexOfLast.kt") + public void testIndexOfLast() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt"); + doTest(fileName); + } + @TestMetadata("kt12983_forInGenericArrayIndices.kt") public void testKt12983_forInGenericArrayIndices() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/kt12983_forInGenericArrayIndices.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 5be6ffcd413..fb36782726e 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 @@ -15469,6 +15469,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { doTest(fileName); } + @TestMetadata("indexOfLast.kt") + public void testIndexOfLast() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/indexOfLast.kt"); + doTest(fileName); + } + @TestMetadata("kt12983_forInGenericArrayIndices.kt") public void testKt12983_forInGenericArrayIndices() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/forInIndices/kt12983_forInGenericArrayIndices.kt");