/* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ var gTestfile = "for-loop-with-lexical-declaration-and-nested-function-statement.js"; //----------------------------------------------------------------------------- var BUGNUMBER = 1149797; var summary = "Don't assert when freshening the scope chain for a for-loop whose head " + "contains a lexical declaration, where the loop body might add more " + "bindings at runtime"; print(BUGNUMBER + ": " + summary); /************** * BEGIN TEST * **************/ for (let x = 0; x < 9; ++x) { function q1() {} } { for (let x = 0; x < 9; ++x) { function q2() {} } } function f1() { for (let x = 0; x < 9; ++x) { function q3() {} } } f1(); function f2() { { for (let x = 0; x < 9; ++x) { function q4() {} } } } f2(); for (let x = 0; x < 9; ++x) { // deliberately inside a block statement function q5() {} } { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement function q6() {} } } function g1() { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement function q7() {} } } g1(); function g2() { { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement function q8() {} } } } g2(); for (let x = 0; x < 9; ++x) { (function() { eval("function q9() {}"); })(); } { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("function q10() {}"); })(); } } function h1() { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("function q11() {}"); })(); } } h1(); function h2() { { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("function q12() {}"); })(); } } } h2(); /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete");