/*
 * Copyright (c) 2024-2026 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.
 */
 
class Point {
    x: number;
    y: number;
}

class ListTest<T> {
    constructor()
    {
        this.num = 10;
        this.data = new (T | undefined)[this.num](undefined);
    }
    private data: (T | undefined)[];
    private num: int;
}

function main(): void {
    let s = new string[3]("");
    let n = new number[3](0);
    let i = new Int[3](0);
    let x = new Point[3](new Point());
    let y = new ListTest<Point>[3](new ListTest<Point>());
}