| function foo() { |
| "use strict"; |
| |
| if (arguments[Symbol.iterator] !== Array.prototype.values) |
| throw "Symbol.iterator is wrong"; |
| |
| arguments[Symbol.iterator] = 1; |
| |
| if (arguments[Symbol.iterator] !== 1) |
| throw "Symbol.iterator did not update"; |
| |
| let failed = true; |
| try { |
| arguments.callee; |
| } catch (e) { |
| failed = false; |
| } |
| if (failed) |
| throw "one property stopped another from showing up"; |
| |
| delete arguments[Symbol.iterator]; |
| |
| if (Symbol.iterator in arguments) |
| throw "Symbol.iterator did not get deleted"; |
| |
| failed = true; |
| try { |
| arguments.callee; |
| } catch (e) { |
| failed = false; |
| } |
| if (failed) |
| throw "one property stopped another from showing up"; |
| } |
| |
| for (i = 0; i < 10000; i++) |
| foo(); |