diff --git a/lib/nodes.js b/lib/nodes.js index 2f2fc7a8..ee1a2a6c 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -230,14 +230,13 @@ // Compile the expressions body, with declarations of all inner variables // pushed up to the top. compile_with_declarations: function compile_with_declarations(o) { - var args, argv, code; + var args, code; code = this.compile_node(o); args = this.contains(function(node) { return node instanceof ValueNode && node.is_arguments(); }); - argv = args && o.scope.check('arguments') ? '' : 'var '; if (args) { - code = this.idt() + argv + "arguments = Array.prototype.slice.call(arguments, 0);\n" + code; + code = this.idt() + "arguments = Array.prototype.slice.call(arguments, 0);\n" + code; } if (o.scope.has_assignments(this)) { code = this.idt() + 'var ' + o.scope.compiled_assignments() + ";\n" + code; diff --git a/src/nodes.coffee b/src/nodes.coffee index a7d5a026..8bcc5f54 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -156,8 +156,7 @@ Expressions: exports.Expressions: inherit Node, { compile_with_declarations: (o) -> code: @compile_node(o) args: @contains (node) -> node instanceof ValueNode and node.is_arguments() - argv: if args and o.scope.check('arguments') then '' else 'var ' - code: @idt() + argv + "arguments = Array.prototype.slice.call(arguments, 0);\n" + code if args + code: @idt() + "arguments = Array.prototype.slice.call(arguments, 0);\n" + code if args code: @idt() + 'var ' + o.scope.compiled_assignments() + ";\n" + code if o.scope.has_assignments(this) code: @idt() + 'var ' + o.scope.compiled_declarations() + ";\n" + code if o.scope.has_declarations(this) code