| /* |
| * 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"); |