• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* Copyright (c) 2024 Huawei Device Co., Ltd.
2 * Licensed under the Apache License, Version 2.0 (the "License");
3 * you may not use this file except in compliance with the License.
4 * You may obtain a copy of the License at
5 *
6 * http://www.apache.org/licenses/LICENSE-2.0
7 *
8 * Unless required by applicable law or agreed to in writing, software
9 * distributed under the License is distributed on an "AS IS" BASIS,
10 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 * See the License for the specific language governing permissions and
12 * limitations under the License.
13 */
14
15abstract class A77<T> {
16  abstract foo(x?: Partial<T>): string;
17}
18
19class B77 extends A77<B77> {
20 override foo(x?: Partial<B77>): string {
21     if (x == undefined) {
22       return "undefined";
23     } else {
24       return "Partial<B77>";
25    }
26  };
27}
28
29function bar<T>(x: A77<T>, y: Partial<A77<T>>): void {
30   assert (x.foo(undefined) == "undefined");
31   assert (x.foo(y) == "Partial<B77>");
32}
33
34function main() : void {
35   let x: A77<B77>  = new B77();
36   let y: Partial<B77> = {};
37
38   assert (x.foo(undefined) == "undefined");
39   assert (x.foo(y) == "Partial<B77>");
40
41   bar<B77>(x, y);
42
43   let z = new B77();
44   assert (z.foo(undefined) == "undefined");
45   assert (z.foo(y) == "Partial<B77>");
46}
47