| function assert(b) { |
| if (!b) |
| throw new Error("Bad assertion") |
| } |
| |
| (function (x = 20) { |
| var a; |
| assert(arguments.length === 0); |
| assert(typeof arguments !== "function"); |
| { |
| function arguments() { |
| } |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| assert(typeof arguments === "function"); |
| }()); |
| |
| (function (x = () => arguments) { |
| var a; |
| let originalArguments = x(); |
| assert(originalArguments === arguments); |
| let z; |
| { |
| function arguments() { return 25; } |
| z = arguments; |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| assert(z !== originalArguments); |
| assert(x() === z); |
| assert(typeof z === "function"); |
| assert(z() === 25); |
| }()); |
| |
| (function ({arguments}) { |
| assert(arguments === 20); |
| |
| var a; |
| { |
| function arguments() { return 25; } |
| assert(arguments() === 25); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(arguments === 20); |
| }({arguments: 20})); |
| |
| (function (y = () => arguments, {arguments}) { |
| assert(y() === arguments); |
| var a; |
| { |
| function arguments() { return 25; } |
| assert(arguments() === 25); |
| assert(y() !== arguments); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(y() === arguments); |
| }(undefined, {arguments: {}})); |
| |
| (function (y = () => arguments, z = y(), {arguments}) { |
| assert(typeof z === "object"); |
| assert(z.length === 3); |
| assert(z[0] === undefined); |
| assert(z[1] === undefined); |
| assert(typeof z[2] === "object"); |
| assert(z[2].arguments === arguments); |
| assert(y() === arguments); |
| |
| var a; |
| { |
| function arguments() { return 25; } |
| assert(arguments() === 25); |
| assert(y() !== arguments); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(y() === arguments); |
| }(undefined, undefined, {arguments: {}})); |
| |
| (function (arguments) { |
| assert(arguments === 25); |
| |
| var a; |
| { |
| function arguments() { return 30; } |
| assert(arguments() === 30); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(arguments === 25); |
| }(25)); |
| |
| (function (arguments) { |
| assert(arguments === 25); |
| let foo = () => arguments; |
| assert(foo() === arguments); |
| |
| var a; |
| { |
| function arguments() { return 30; } |
| assert(arguments() === 30); |
| assert(foo() === 25); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(arguments === 25); |
| assert(foo() === arguments); |
| }(25)); |
| |
| (function () { |
| assert(arguments.length === 1); |
| assert(arguments[0] === 25); |
| |
| let outer = () => arguments; |
| var a; |
| { |
| assert(outer()[0] === 25); |
| function arguments() { return 30; } |
| assert(outer() === arguments); |
| assert(outer()() === 30); |
| assert(arguments() === 30); |
| |
| function b() { |
| var g = 1; |
| a[5]; |
| } |
| } |
| |
| assert(arguments() === 30); |
| }(25)); |