1/* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16class A<T> {} 17class B<T> {} 18 19class C { 20 static foo<T, U>(...p: [A<T>, B<U>]): boolean { 21 return p[0] == p[1] 22 } 23 24 static moo<T, U>(a:int, ...p: [A<T>, B<U>]): boolean { 25 return p[0] == p[1] 26 } 27} 28 29function main() { 30 let a1: [A<Long>, B<Error>] = [new A<Long>, new B<Error>] 31 32 assertTrue(C.foo<Long, Error>(...a1) == false) 33 assertTrue(C.moo<Long, Error>(12, ...a1) == false) 34 35 assertTrue(C.foo<Long, Error>(...[new A<Long>, new B<Error>]) == false) 36 assertTrue(C.moo<Long, Error>(12, ...[new A<Long>, new B<Error>]) == false) 37 38 assertTrue(C.foo<Long, Error>(...[new A<Long>, new B<Error>] as [A<Long>, B<Error>]) == false) 39 assertTrue(C.moo<Long, Error>(12, ...[new A<Long>, new B<Error>] as [A<Long>, B<Error>]) == false) 40 41 assertTrue(C.foo<Long, Error>(new A<Long>, new B<Error>) == false) 42 assertTrue(C.moo<Long, Error>(12, new A<Long>, new B<Error>) == false) 43} 44