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