| /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ |
| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = 'none'; |
| var summary = 'Test destructuring assignments for differing scopes'; |
| var actual = ''; |
| var expect = ''; |
| |
| printBugNumber(BUGNUMBER); |
| printStatus (summary); |
| |
| function f() { |
| var x = 3; |
| if (x > 0) { |
| let {a:x} = {a:7}; |
| if (x != 7) |
| throw "fail"; |
| } |
| if (x != 3) |
| throw "fail"; |
| } |
| |
| function g() { |
| // Before JS1.7's destructuring for…in was fixed to match JS1.8's, |
| // the expected values were a == "x" and b == 7. |
| for (var [a,b] in {x:7}) { |
| if (a !== "x" || typeof b !== "undefined") |
| throw "fail"; |
| } |
| |
| { |
| // Before JS1.7's destructuring for…in was fixed to match JS1.8's, |
| // the expected values were a == "y" and b == 8. |
| for (let [a,b] in {y:8}) { |
| if (a !== "y" || typeof b !== "undefined") |
| throw "fail"; |
| } |
| } |
| |
| if (a !== "x" || typeof b !== "undefined") |
| throw "fail"; |
| } |
| |
| f(); |
| g(); |
| |
| if (typeof a != "undefined" || typeof b != "undefined" || typeof x != "undefined") |
| throw "fail"; |
| |
| function h() { |
| // Before JS1.7's destructuring for…in was fixed to match JS1.8's, |
| // the expected values were a == "x" and b == 9. |
| for ([a,b] in {z:9}) { |
| if (a !== "z" || typeof b !== "undefined") |
| throw "fail"; |
| } |
| } |
| |
| h(); |
| |
| if (a !== "z" || typeof b !== "undefined") |
| throw "fail"; |
| |
| reportCompare(expect, actual, summary); |