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_cifunction main():void{
173af6ab5fSopenharmony_ci    assert foo2() == 5;
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci    let bar = new Bar();
203af6ab5fSopenharmony_ci    assert bar.bar2() == 5;
213af6ab5fSopenharmony_ci
223af6ab5fSopenharmony_ci    assert goo1() == 15;
233af6ab5fSopenharmony_ci    assert goo2() == 15;
243af6ab5fSopenharmony_ci    assert goo2((a0:int):int=>{return 25;}) == 25;
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci    assert boo1() == 18;
273af6ab5fSopenharmony_ci    assert boo2(1,2,3) == 6;
283af6ab5fSopenharmony_ci
293af6ab5fSopenharmony_ci    assert doo1() == 8;
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ci    too1();
323af6ab5fSopenharmony_ci    too2();
333af6ab5fSopenharmony_ci    too3();
343af6ab5fSopenharmony_ci}
353af6ab5fSopenharmony_ci
363af6ab5fSopenharmony_cifunction foo1(): int {
373af6ab5fSopenharmony_ci    return 5;
383af6ab5fSopenharmony_ci}
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_cifunction foo2(a : int = foo1() ): int {
413af6ab5fSopenharmony_ci    return a;
423af6ab5fSopenharmony_ci}
433af6ab5fSopenharmony_ci
443af6ab5fSopenharmony_ciclass Bar {
453af6ab5fSopenharmony_ci    bar1(): int {
463af6ab5fSopenharmony_ci        return 5;
473af6ab5fSopenharmony_ci    }
483af6ab5fSopenharmony_ci
493af6ab5fSopenharmony_ci    bar2(a : int = this.bar1() ): int {
503af6ab5fSopenharmony_ci        return a;
513af6ab5fSopenharmony_ci    }
523af6ab5fSopenharmony_ci}
533af6ab5fSopenharmony_ci
543af6ab5fSopenharmony_cifunction goo1(a : () => int = (): int => {return 15;}): int {
553af6ab5fSopenharmony_ci    return a();
563af6ab5fSopenharmony_ci}
573af6ab5fSopenharmony_ci
583af6ab5fSopenharmony_cifunction goo2(a:(a0:int) => int = (a0:int):int=>{return 15;} ): int {
593af6ab5fSopenharmony_ci    return a(5);
603af6ab5fSopenharmony_ci}
613af6ab5fSopenharmony_ci
623af6ab5fSopenharmony_cifunction boo1(a0:int = boo1(1,2,3),a1:int = boo1(1,2,3),a2:int = boo1(1,2,3)):int{
633af6ab5fSopenharmony_ci    return a0+a1+a2;
643af6ab5fSopenharmony_ci}
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_cifunction boo2(a0:int,a1:int,a2:int = boo2(1,2,3)):int{
673af6ab5fSopenharmony_ci    return a0+a1+a2;
683af6ab5fSopenharmony_ci}
693af6ab5fSopenharmony_ci
703af6ab5fSopenharmony_cifunction doo1(a0:int = 5+3):int{
713af6ab5fSopenharmony_ci    return a0;
723af6ab5fSopenharmony_ci}
733af6ab5fSopenharmony_ci
743af6ab5fSopenharmony_cifunction too1(a0:int = 5 /*comment*/):int{
753af6ab5fSopenharmony_ci    return a0;
763af6ab5fSopenharmony_ci}
773af6ab5fSopenharmony_ci
783af6ab5fSopenharmony_cifunction too2(a0:int = 5 //comment
793af6ab5fSopenharmony_ci):int{
803af6ab5fSopenharmony_ci    return a0;
813af6ab5fSopenharmony_ci}
823af6ab5fSopenharmony_ci
833af6ab5fSopenharmony_cifunction too3(a0:int = 5 /*comment1*/, a1:int = 5 //comment2
843af6ab5fSopenharmony_ci):int{
853af6ab5fSopenharmony_ci    return a0;
863af6ab5fSopenharmony_ci}
87