/* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ var gTestfile = "for-loop-with-bindings-added-at-runtime.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) eval("var y"); { for (let x = 0; x < 9; ++x) eval("var y"); } function f1() { for (let x = 0; x < 9; ++x) eval("var y"); } f1(); function f2() { { for (let x = 0; x < 9; ++x) eval("var y"); } } f2(); for (let x = 0; x < 9; ++x) { // deliberately inside a block statement eval("var y"); } { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement eval("var y"); } } function g1() { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement eval("var y"); } } g1(); function g2() { { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement eval("var y"); } } } g2(); for (let x = 0; x < 9; ++x) { (function() { eval("var y"); })(); } { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("var y"); })(); } } function h1() { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("var y"); })(); } } h1(); function h2() { { for (let x = 0; x < 9; ++x) { // deliberately inside a block statement (function() { eval("var y"); })(); } } } h2(); /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete");