13af6ab5fSopenharmony_ci/*
23af6ab5fSopenharmony_ci * Copyright (c) 2023-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_ciexport class A {
173af6ab5fSopenharmony_ci  constructor(
183af6ab5fSopenharmony_ci    public onAction?: () => void,
193af6ab5fSopenharmony_ci    public onH?: () => void
203af6ab5fSopenharmony_ci  ) {}
213af6ab5fSopenharmony_ci}
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_ciexport function f(a: Partial<A>) {}
243af6ab5fSopenharmony_ciexport function ff(a: A) {}
253af6ab5fSopenharmony_ciexport function foo(func: () => void) {}
263af6ab5fSopenharmony_ciexport function bar(func: () => void, a: number, b: string) {}
273af6ab5fSopenharmony_ci
283af6ab5fSopenharmony_ciexport class OhosLibC {}
293af6ab5fSopenharmony_ciexport interface OhosLibI {}
303af6ab5fSopenharmony_ciexport interface OhosLibIC extends OhosLibC {}
313af6ab5fSopenharmony_ciexport interface OhosLibII extends OhosLibI {}
323af6ab5fSopenharmony_ciexport class OhosLibCC extends OhosLibC {}
333af6ab5fSopenharmony_ciexport class OhosLibCI implements OhosLibI {}
343af6ab5fSopenharmony_ci
353af6ab5fSopenharmony_ciexport interface OhosI {
363af6ab5fSopenharmony_ci  f: number;
373af6ab5fSopenharmony_ci}
383af6ab5fSopenharmony_ci
393af6ab5fSopenharmony_ciexport function ohFunction1({ d: OhosI }): void {} // incorrect usage, but it was an issue, so we check it too
403af6ab5fSopenharmony_ciexport function ohFunction2(p: { d: OhosI }): void {}
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ciexport function fooOh(): any {}
433af6ab5fSopenharmony_ciexport function barOh(a: any) {}
443af6ab5fSopenharmony_ci
453af6ab5fSopenharmony_ciexport interface OhosInterface {
463af6ab5fSopenharmony_ci  fld: A & {
473af6ab5fSopenharmony_ci    [key: string]: number;
483af6ab5fSopenharmony_ci  };
493af6ab5fSopenharmony_ci}
503af6ab5fSopenharmony_ci
513af6ab5fSopenharmony_ciexport type CallbackType = (name: string, param: unknown) => void;
523af6ab5fSopenharmony_ci
533af6ab5fSopenharmony_ciexport const callback = (name: string, param: Object): void => {};
543af6ab5fSopenharmony_ci
553af6ab5fSopenharmony_ciexport interface a {
563af6ab5fSopenharmony_ci  test:(topic: string) => void
573af6ab5fSopenharmony_ci}
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_ciexport function doSomething(a: a, topic: string): void {
603af6ab5fSopenharmony_ci
613af6ab5fSopenharmony_ci}
623af6ab5fSopenharmony_ci
633af6ab5fSopenharmony_ciexport class TestClassC {
643af6ab5fSopenharmony_ci  public ccc: null = null;
653af6ab5fSopenharmony_ci}
663af6ab5fSopenharmony_ci
673af6ab5fSopenharmony_ciexport class TestClassD {
683af6ab5fSopenharmony_ci  public ccc: string = '';
693af6ab5fSopenharmony_ci}
703af6ab5fSopenharmony_ci
713af6ab5fSopenharmony_ci
723af6ab5fSopenharmony_ciexport declare function foo_lib(p1: number, p2: string): undefined;
733af6ab5fSopenharmony_ciexport declare function foo_lib(p1: string, p2: number): undefined;