Skip to content

Commit

Permalink
fix for issue 1014 - arguments object in ranged array - apply(this,ar…
Browse files Browse the repository at this point in the history
…guments) instead of call(this)
  • Loading branch information
geraldalewis committed Jan 7, 2011
1 parent 5a7120e commit 782bc6c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
4 changes: 2 additions & 2 deletions lib/nodes.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/nodes.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ exports.Range = class Range extends Base
clause = "#{@fromVar} <= #{@toVar} ?"
body = "var #{vars}; #{clause} #{i} <#{@equals} #{@toVar} : #{i} >#{@equals} #{@toVar}; #{clause} #{i} += 1 : #{i} -= 1"
post = "{ #{result}.push(#{i}); }\n#{idt}return #{result};\n#{o.indent}"
"(function() {#{pre}\n#{idt}for (#{body})#{post}}).call(this)"
"(function() {#{pre}\n#{idt}for (#{body})#{post}}).apply(this,arguments)"

#### Slice

Expand Down
26 changes: 26 additions & 0 deletions test/range_literals.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,29 @@ test "large ranges are generated with looping constructs", ->
up = [0...100]
eq 100, (len = up.length)
eq 99, up[len - 1]

test "#1014 slices with arguments object", ->
useArg0AtEnd = ->
ary = -> [0..arguments[0]]
ary 9
arg0End = useArg0AtEnd()

useArg0AtStart = ->
ary = -> [arguments[0]..9]
ary 0
arg0Start = useArg0AtStart()

useArgs0And1 = ->
ary = -> [arguments[0]..arguments[1]]
ary 0,9
args0And1 = useArgs0And1()

useArg0FromOuter = ->
ary = -> [arguments[0]..9]
ary(arguments[0])
arg0FromOuter = useArg0FromOuter(0)

arrayEq arg0End , shared
arrayEq arg0Start , shared
arrayEq args0And1 , shared
arrayEq arg0FromOuter , shared

0 comments on commit 782bc6c

Please sign in to comment.