diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineEvaluationOrderTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineEvaluationOrderTestGenerated.java index 2317682823d..ed43e551eb0 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineEvaluationOrderTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/InlineEvaluationOrderTestGenerated.java @@ -268,4 +268,10 @@ public class InlineEvaluationOrderTestGenerated extends AbstractInlineEvaluation String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/inlineEvaluationOrder/cases/whileComplex.kt"); doTest(fileName); } + + @TestMetadata("whileConditionExtracted.kt") + public void testWhileConditionExtracted() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/inlineEvaluationOrder/cases/whileConditionExtracted.kt"); + doTest(fileName); + } } diff --git a/js/js.translator/testData/inlineEvaluationOrder/cases/whileConditionExtracted.kt b/js/js.translator/testData/inlineEvaluationOrder/cases/whileConditionExtracted.kt new file mode 100644 index 00000000000..262c2c5ea2f --- /dev/null +++ b/js/js.translator/testData/inlineEvaluationOrder/cases/whileConditionExtracted.kt @@ -0,0 +1,24 @@ +// See KT-8005 +package foo + +private inline fun bar(predicate: (Char) -> Boolean): Int { + var i = 0 + val str = "abc " + while (predicate(str[i]) && i < 3) { + i++ + } + return i +} + +private fun test(c: Char): Int { + return bar { it != c } +} + +fun box(): String { + assertEquals(0, test('a')) + assertEquals(1, test('b')) + assertEquals(2, test('c')) + assertEquals(3, test('*')) + + return "OK" +} \ No newline at end of file