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(); |