| <p>This tests verifies the identity of function.arguments vs 'arguments' used locally. |
| </p> |
| <pre id="console"></pre> |
| |
| <script> |
| function log(s) |
| { |
| document.getElementById("console").appendChild(document.createTextNode(s + "\r\n")); |
| } |
| |
| function shouldBe(a, aDescription, b) |
| { |
| if (a == b) { |
| log("PASS: " + aDescription + " should be " + b + " and is."); |
| return; |
| } |
| log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + "."); |
| } |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| } |
| |
| function getArguments() { return arguments.callee.caller.arguments; } |
| |
| (function() { |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments", |
| false |
| ); |
| })(); |
| |
| (function() { |
| shouldBe( |
| getArguments() == eval('arguments'), |
| "getArguments() == eval('arguments')", |
| false |
| ); |
| })(); |
| |
| (function() { |
| eval(""); |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {eval present}", |
| false |
| ); |
| })(); |
| |
| (function() { |
| var f = function() { }; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {function present}", |
| false |
| ); |
| })(); |
| |
| (function(x) { |
| var f = function() { return x; }; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {closure present}", |
| false |
| ); |
| })(0); |
| |
| (function() { |
| with ({ }) { }; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {with present}", |
| false |
| ); |
| })(); |
| |
| (function() { |
| try { } catch(e) { }; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {catch present}", |
| false |
| ); |
| })(); |
| (function() { |
| var arguments; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {var declaration}", |
| false |
| ); |
| })(); |
| |
| (function() { |
| function arguments() { }; |
| shouldBe( |
| getArguments() == arguments, |
| "getArguments() == arguments {function declaration}", |
| false |
| ); |
| })(); |
| </script> |