/*
 * 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 var1 = 1;
export var {} = {};
export var { l: var2 } = { l: 2 };
export var { ...vals } = { m: 3, o: 4, p: 5 };
export var { q: var6, ...varn } = { q: 6, t: 7, u: 8 };
export var { v: var9, "var10": var10, ...varo } = { v: 9, var10: 10, a1: 11 };
export var { b1: var12, ['var13']: var13Alis, ...varp } = { b1: 12, var13: 13, c1: 14 };
let var16Cons: number = 16;
export var { d1: var15, ["var16"]: var16, ...varq } = { d1: 15, var16: [var16Cons], e1: 17 };
export var { ["var" + "18"]: var18, f1: var19 } = { ["var" + "18"]: 18, f1: 19 };
assert(var1 === 1);
assert(var2 === 2);
assert(vals.m === 3);
assert(vals.o === 4);
assert(vals.p === 5);
assert(var6 === 6);
assert(varn.t === 7);
assert(varn.u === 8);
assert(var9 === 9);
assert(var10 === 10);
assert(varo.a1 === 11);
assert(var12 === 12);
assert(var13Alis === 13);
assert(varp.c1 === 14);
assert(var15 === 15);
assert(var16.toString() === "16");
assert(varq.e1 === 17);
assert(var18 === 18);
assert(var19 === 19);
namespace ns1 {
    export var { i: i, ["var" + "21"]: j, ...k } = { i: 20, ["var" + "21"]: 21, g1: 22 };
    assert(i === 20);
    assert(j === 21);
    assert(k.g1 === 22);
}
assert(ns1.i === 20);
assert(ns1.j === 21);
assert(ns1.k.g1 === 22);
export var [] = [];
export let [,] = [,];
export var [ele1, ele2] = [1, 2];
export var [ele3, , ele5] = [3, 4, 5, 6];
export var [...eles1] = [7, 8, 9];
export var [ele10, ...eles2] = [10, 11, 12];
export var [, ...eles3] = [13, 14, 15];
assert(ele1 === 1);
assert(ele2 === 2);
assert(ele3 === 3);
assert(ele5 === 5);
assert(eles1[0] === 7);
assert(eles1[1] === 8);
assert(eles1[2] === 9);
assert(ele10 === 10);
assert(eles2[0] === 11);
assert(eles2[1] === 12);
assert(eles3[0] === 14);
assert(eles3[1] === 15);
namespace ns2 {
    export var [g, { h: h }] = [13, { h: 14 }, 15];
    assert(g === 13);
    assert(h === 14);
}
assert(ns2.g === 13);
assert(ns2.h === 14);
