From 8eb0fb31ca1a8e3aff763c2756de159adaf6fe5f Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 20 Jul 2012 12:38:07 +0400 Subject: [PATCH] Int#downto --- .../org/jetbrains/k2js/test/semantics/RangeTest.java | 4 ++++ .../intrinsic/functions/factories/RangesFIF.java | 1 + js/js.translator/testFiles/kotlin_lib.js | 6 +++++- js/js.translator/testFiles/range/cases/intDownTo.kt | 11 +++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 js/js.translator/testFiles/range/cases/intDownTo.kt diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/RangeTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/RangeTest.java index 618ca4dd5a5..3e56d0480aa 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/RangeTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/RangeTest.java @@ -48,4 +48,8 @@ public final class RangeTest extends SingleFileTranslationTest { public void testIntUpTo() throws Exception { fooBoxTest(); } + + public void testIntDownTo() throws Exception { + fooBoxTest(); + } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java index ef436de6393..d6e787d72e7 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java @@ -31,5 +31,6 @@ public final class RangesFIF extends CompositeFIF { private RangesFIF() { add(pattern("Int.upto"), new CallStandardMethodIntrinsic("Kotlin.intUpto", true, 1)); + add(pattern("Int.downto"), new CallStandardMethodIntrinsic("Kotlin.intDownto", true, 1)); } } diff --git a/js/js.translator/testFiles/kotlin_lib.js b/js/js.translator/testFiles/kotlin_lib.js index 06fa523c236..edcc2b741a0 100644 --- a/js/js.translator/testFiles/kotlin_lib.js +++ b/js/js.translator/testFiles/kotlin_lib.js @@ -43,7 +43,11 @@ var kotlin = {set:function (receiver, key, value) { }; Kotlin.intUpto = function (from, limit) { - return Kotlin.$new(Kotlin.NumberRange)(from, limit - from + 1); + return Kotlin.$new(Kotlin.NumberRange)(from, limit - from + 1, false); + }; + + Kotlin.intDownto = function (from, limit) { + return Kotlin.$new(Kotlin.NumberRange)(from, from - limit + 1, true); }; Kotlin.modules = {}; diff --git a/js/js.translator/testFiles/range/cases/intDownTo.kt b/js/js.translator/testFiles/range/cases/intDownTo.kt new file mode 100644 index 00000000000..a99704dc664 --- /dev/null +++ b/js/js.translator/testFiles/range/cases/intDownTo.kt @@ -0,0 +1,11 @@ +package foo + +import java.util.ArrayList + +fun box() : Boolean { + var elems = ArrayList() + for (i in 4 downto 0) { + elems.add(i) + } + return elems[0] == 4 && elems[1] == 3 && elems[2] == 2 && elems[3] == 1 && elems[4] == 0 +} \ No newline at end of file