| <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> |