13af6ab5fSopenharmony_ci/*
23af6ab5fSopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License.
53af6ab5fSopenharmony_ci * You may obtain a copy of the License at
63af6ab5fSopenharmony_ci *
73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
83af6ab5fSopenharmony_ci *
93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and
133af6ab5fSopenharmony_ci * limitations under the License.
143af6ab5fSopenharmony_ci */
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_civar tuple1: [] = [];
183af6ab5fSopenharmony_civar tuple2: [[[]]] = [[[]]];
193af6ab5fSopenharmony_civar tuple3: [number, number, number] = [1, 2, 3];
203af6ab5fSopenharmony_civar tuple4: [typeof tuple1, string] = [[], "foo"];
213af6ab5fSopenharmony_civar tuple5: [[a: number, b?: string], [boolean | string, number[]]] = [[1], ["foo", [1, 2, 3]]];
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_civar tuple6: [number] | [string] = [5];
243af6ab5fSopenharmony_civar tuple7: [number, string] | number | string = [5, "foo"];
253af6ab5fSopenharmony_civar tuple8: (boolean | { a: number, b: string })[] | [string, number | string] = [false, { a: 5, b: "foo" }];
263af6ab5fSopenharmony_ci
273af6ab5fSopenharmony_civar tuple9: [number, string | number, boolean | string];
283af6ab5fSopenharmony_civar tuple10: [number, string, string];
293af6ab5fSopenharmony_civar tuple11: [a: number, b: number | string, c: boolean];
303af6ab5fSopenharmony_civar tuple12: [a: number, b: string, c: boolean, d?: any];
313af6ab5fSopenharmony_civar tuple13: [a?: number, b?: number, c?: number];
323af6ab5fSopenharmony_ci
333af6ab5fSopenharmony_cituple9 = tuple10;
343af6ab5fSopenharmony_cituple9 = tuple11;
353af6ab5fSopenharmony_cituple9 = tuple12;
363af6ab5fSopenharmony_cituple11 = tuple12;
373af6ab5fSopenharmony_cituple13 = tuple1;
383af6ab5fSopenharmony_cituple13 = tuple13;
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_civar tuple14 = [[1, 2], func1(1, "foo"), true] as [a?: [number, number], b?: [a: number, b?: boolean[]], c?: boolean];
413af6ab5fSopenharmony_cituple14 = [];
423af6ab5fSopenharmony_cituple14 = [[1, 2]];
433af6ab5fSopenharmony_cituple14 = [[3, 4], [5]];
443af6ab5fSopenharmony_cituple14 = [[6, 7], [8, [true, false]]];
453af6ab5fSopenharmony_cituple14 = [[9, 10], [11, [true, false]], true];
463af6ab5fSopenharmony_ci
473af6ab5fSopenharmony_cifunction func1(a: number, b: string): [a: number, b?: boolean[]] {
483af6ab5fSopenharmony_ci    var tuple15: [number];
493af6ab5fSopenharmony_ci    tuple15 = [123];
503af6ab5fSopenharmony_ci    return tuple15;
513af6ab5fSopenharmony_ci}
523af6ab5fSopenharmony_ci
533af6ab5fSopenharmony_civar tuple16: [typeof tuple10, typeof tuple1, number];
543af6ab5fSopenharmony_ci
553af6ab5fSopenharmony_cifunction func2(a: typeof tuple16, b?: [number, boolean]): [typeof func2, string] {
563af6ab5fSopenharmony_ci    return [func2, "foo"];
573af6ab5fSopenharmony_ci}
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_civar tuple17 = func2([[1, "foo", "bar"], [], 2]);
603af6ab5fSopenharmony_civar tuple18 = func2([[3, "baz", "qux"], [], 4], [5, true]);
613af6ab5fSopenharmony_ci
623af6ab5fSopenharmony_civar a: string = tuple17[1];
633af6ab5fSopenharmony_civar b: typeof func2 = tuple18[0];
643af6ab5fSopenharmony_cib([[1, "foo", "bar"], [], 2]);
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_civar tuple19: [number, string] | [number, string];
673af6ab5fSopenharmony_civar tuple20: [a: string, b: number, c?: boolean];
683af6ab5fSopenharmony_civar tuple21: number | typeof tuple20 | [a: string, b: number];
693af6ab5fSopenharmony_civar tuple22: [number, string];
703af6ab5fSopenharmony_cituple21 = tuple20;
713af6ab5fSopenharmony_cituple19 = tuple22;
723af6ab5fSopenharmony_ci
733af6ab5fSopenharmony_civar tuple23: [number, number, number] | [number, number, number, number];
743af6ab5fSopenharmony_cituple23 = [1, 2, 3];
753af6ab5fSopenharmony_cituple23 = [1, 2, 3, 4];
763af6ab5fSopenharmony_ci
773af6ab5fSopenharmony_civar tuple24: number[][] | string[][] | [[number, number], [string, string]];
783af6ab5fSopenharmony_cituple24 = [[1, 2, 3]];
793af6ab5fSopenharmony_cituple24 = [[1, 2], ["foo", "bar"]];
803af6ab5fSopenharmony_cituple24 = [["foo", "bar", "baz"]];
813af6ab5fSopenharmony_ci
823af6ab5fSopenharmony_civar tuple25: number[] | [string, string] | number;
833af6ab5fSopenharmony_cituple25 = [1, 2, 3, 4, 5];
843af6ab5fSopenharmony_cituple25 = ["foo", "bar"];
853af6ab5fSopenharmony_cituple25 = 12;
86