From a4156b71fa6eb89758dda1c8ffb6e8b2c2f14a83 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Tue, 27 Jul 2010 23:06:11 -0400 Subject: [PATCH] fixing broken range literal expansions. --- lib/nodes.js | 2 +- src/nodes.coffee | 2 +- test/test_ranges_slices_and_splices.coffee | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/nodes.js b/lib/nodes.js index fda064f1..1831a994 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -639,7 +639,7 @@ return ("[" + (range.join(', ')) + "]"); } else { o.index = i; - body.compileSimple(o); + body = this.compileSimple(o); } } else { clause = ("" + this.fromVar + " <= " + this.toVar + " ?"); diff --git a/src/nodes.coffee b/src/nodes.coffee index bac1abf2..f83e62b0 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -584,7 +584,7 @@ exports.RangeNode = class RangeNode extends BaseNode return "[#{ range.join(', ') }]" else o.index = i - body.compileSimple o + body = @compileSimple o else clause = "#@fromVar <= #@toVar ?" body = "var #i = #@fromVar; #clause #i <#@equals #@toVar : #i >#@equals #@toVar; #clause #i += 1 : #i -= 1" diff --git a/test/test_ranges_slices_and_splices.coffee b/test/test_ranges_slices_and_splices.coffee index d30fdac9..e1c7b416 100644 --- a/test/test_ranges_slices_and_splices.coffee +++ b/test/test_ranges_slices_and_splices.coffee @@ -33,6 +33,11 @@ ok array.join(' ') is "6 7 8 9 10" array = [5..1] ok array.join(' ') is '5 4 3 2 1' +array = [30...0] +ok (len = array.length) is 30 +ok array[len - 1] is 1 + + # String slicing (at least on Node). hello = "Hello World"