Source code

Revision control

Copy as Markdown

Other Tools

// deoptimize `arguments` in the arrow's closest enclosing non-arrow-function
// non-arrow-function -> arrow function
a = 0;
(function() {
a = (() => eval("arguments"))();
})(1, 2, 3, 4);
assertEq(a.length, 4);
// non-arrow-function -> arrow function -> arrow function
a = 0;
(function() {
(() => {
a = (() => eval("arguments"))();
})();
})(1, 2, 3, 4);
assertEq(a.length, 4);
// non-arrow-function -> arrow function -> non-arrow-function -> arrow function
a = 0;
(function() {
(() => {
(function () {
a = (() => eval("arguments"))();
})(1, 2, 3, 4);
})();
})();
assertEq(a.length, 4);