bug-885067-2.js (645B)
1 // deoptimize `arguments` in the arrow's closest enclosing non-arrow-function 2 3 // non-arrow-function -> arrow function 4 a = 0; 5 (function() { 6 a = (() => eval("arguments"))(); 7 })(1, 2, 3, 4); 8 assertEq(a.length, 4); 9 10 // non-arrow-function -> arrow function -> arrow function 11 a = 0; 12 (function() { 13 (() => { 14 a = (() => eval("arguments"))(); 15 })(); 16 })(1, 2, 3, 4); 17 assertEq(a.length, 4); 18 19 // non-arrow-function -> arrow function -> non-arrow-function -> arrow function 20 a = 0; 21 (function() { 22 (() => { 23 (function () { 24 a = (() => eval("arguments"))(); 25 })(1, 2, 3, 4); 26 })(); 27 })(); 28 assertEq(a.length, 4);