michael@0: "use strict"; michael@0: michael@0: function assertGood(x) { michael@0: assertEq(x, "good"); michael@0: } michael@0: michael@0: (function() { michael@0: var a = arguments; michael@0: return function() { michael@0: assertGood.apply(null, a); michael@0: } michael@0: })("good")(); michael@0: michael@0: (function() { michael@0: var a = arguments; michael@0: return function() { michael@0: a[0] = "good"; michael@0: assertGood.apply(null, a); michael@0: } michael@0: })("bad")(); michael@0: michael@0: Object.prototype[0] = "good"; michael@0: michael@0: (function() { michael@0: var a = arguments; michael@0: return function() { michael@0: delete a[0]; michael@0: assertGood.apply(null, a); michael@0: } michael@0: })("bad")(); michael@0: michael@0: delete Object.prototype[0]; michael@0: michael@0: function assertUndefined(x) { michael@0: assertEq(x, undefined); michael@0: } michael@0: michael@0: (function() { michael@0: var a = arguments; michael@0: return function() { michael@0: a[0] = "bad"; michael@0: assertUndefined.apply(null, a); michael@0: } michael@0: })()();