|
1 load(libdir + "asserts.js"); |
|
2 var ieval = eval; |
|
3 |
|
4 // Now for a tour of the various ways you can access arguments. |
|
5 assertThrowsInstanceOf(function () { |
|
6 ieval("function x(...rest) { arguments; }"); |
|
7 }, SyntaxError) |
|
8 assertThrowsInstanceOf(function () { |
|
9 Function("...rest", "arguments;"); |
|
10 }, SyntaxError); |
|
11 assertThrowsInstanceOf(function (...rest) { |
|
12 eval("arguments;"); |
|
13 }, SyntaxError); |
|
14 assertThrowsInstanceOf(function (...rest) { |
|
15 eval("arguments = 42;"); |
|
16 }, SyntaxError); |
|
17 |
|
18 function g(...rest) { |
|
19 assertThrowsInstanceOf(h, Error); |
|
20 } |
|
21 function h() { |
|
22 g.arguments; |
|
23 } |
|
24 g(); |
|
25 |
|
26 // eval() is evil, but you can still use it with rest parameters! |
|
27 function still_use_eval(...rest) { |
|
28 eval("x = 4"); |
|
29 } |
|
30 still_use_eval(); |