/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import assert from "assert";
export var g = 1;
export var {} = {};
export var { h: h } = { h: 2 };
export var { ...i } = { w1: 3, z1: 4, a2: 5 };
export var { j: j, ...k } = { j: 6, b2: 7, c2: 8 };
export var { l: l, "m": m, ...o } = { l: 9, m: 10, d2: 11 };
export var { p: p, ["e2"]: q, ...t } = { p: 12, e2: 13, f2: 14 };
let u: number = 16;
export var { v: v, ["a1"]: a1, ...b1 } = { v: 15, a1: [u], g2: 17 };
export var { ["var" + "18"]: c1, d1: d1 } = { ["var" + "18"]: 18, d1: 19 };
assert(g === 1);
assert(h === 2);
assert(i.w1 === 3);
assert(i.z1 === 4);
assert(i.a2 === 5);
assert(j === 6);
assert(k.b2 === 7);
assert(k.c2 === 8);
assert(l === 9);
assert(m === 10);
assert(o.d2 === 11);
assert(p === 12);
assert(q === 13);
assert(t.f2 === 14);
assert(v === 15);
assert(a1.toString() === "16");
assert(b1.g2 === 17);
assert(c1 === 18);
assert(d1 === 19);
namespace e1 {
    export var { t1: t1, ["var" + "21"]: u1, ...v1 } = { t1: 20, ["var" + "21"]: 21, h2: 22 };
    assert(t1 === 20);
    assert(u1 === 21);
    assert(v1.h2 === 22);
}
assert(e1.t1 === 20);
assert(e1.u1 === 21);
assert(e1.v1.h2 === 22);
export var [] = [];
export let [,] = [,];
export var [f1, g1] = [1, 2];
export var [h1, , i1] = [3, 4, 5, 6];
export var [...j1] = [7, 8, 9];
export var [l1, ...m1] = [10, 11, 12];
export var [, ...n1] = [13, 14, 15];
assert(f1 === 1);
assert(g1 === 2);
assert(h1 === 3);
assert(i1 === 5);
assert(j1[0] === 7);
assert(j1[1] === 8);
assert(j1[2] === 9);
assert(l1 === 10);
assert(m1[0] === 11);
assert(m1[1] === 12);
assert(n1[0] === 14);
assert(n1[1] === 15);
namespace o1 {
    export var [q1, { s1: s1 }] = [13, { s1: 14 }, 15];
    assert(q1 === 13);
    assert(s1 === 14);
}
assert(o1.q1 === 13);
assert(o1.s1 === 14);
