1/* 2 * Copyright (c) 2022 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 */ 15declare function print(str: any): string; 16declare var ArkTools:any; 17function foo() { 18 return "pass"; 19} 20 21function foo1(a: any) { 22 return a + 1; 23} 24 25function foo2(a: any, b: any) { 26 return a + b; 27} 28 29function foo3(a: any, b: any, c: any) { 30 return a + b + c; 31} 32 33function foo4(a: any, b: any, c: any, d: any) { 34 return a + b + c + d; 35} 36 37print(foo()); 38print(foo1(1)); 39print(foo1(1)); 40print(foo1(1)); 41print(foo2(1, 2)); 42print(foo3(1, 2, 3)); 43print(foo4(1, 2, 3, 4)); 44 45class A { 46 public mode: number = 1; 47 48 constructor(dt: number) { 49 print(dt); 50 print(new.target.name); 51 const size = 50; 52 this.mode = 4; 53 } 54 55 update (dt: number, dt1: number): void { 56 print(dt); 57 print(dt1); 58 } 59} 60 61class B { 62 public mode: number = 1; 63 64 constructor(dt: number, dt1: number, dt2: number) { 65 print(dt); 66 print(dt1); 67 print(dt2); 68 print(new.target.name); 69 const size = 50; 70 this.mode = 4; 71 } 72} 73 74class C { 75 public mode: number = 1; 76 77 constructor(dt: number, dt1: number, dt2: number, dt3: number, dt4: number, dt5: number, dt6: number, dt7: number) { 78 print(new.target.name); 79 print(dt); 80 print(dt1); 81 print(dt4); 82 print(dt6); 83 print(dt7); 84 const size = 50; 85 this.mode = 4; 86 } 87} 88 89function funcv(value: number, value1: number, value2: number, value3: number, value4: number, value5: number, value6: number, value7: number): number { 90 print(value); 91 print(value1); 92 print(value2); 93 print(value3); 94 print(value4); 95 print(value5); 96 print(value6); 97 print(value7); 98 return 100; 99} 100 101function func0(): number { 102 return 110; 103} 104 105function func1(value: number): number { 106 print(value); 107 return value; 108} 109 110function func2(value: number, value1: number): number { 111 print(value); 112 print(value1); 113 return value; 114} 115 116function func3(value: number, value1: number, value2: number): number { 117 print(value); 118 print(value1); 119 print(value2); 120 func1(value); 121 return value; 122} 123 124function func4(value: number, value1: number, value2: number, value3: number): number { 125 print(value); 126 print(value1); 127 print(value2); 128 print(value3); 129 return value; 130} 131 132function testNewTarget(value: number): number { 133 print(new.target.name); 134 return value; 135} 136var systems: A = new A(1); 137var systems1: B = new B(2, 3); 138var systems2: C = new C(3, 4, 5, 6, 7, 8); 139print(func0()); 140func1(); 141func2(1); 142func3("mytest", 2); 143func4(3, 4, 5); 144funcv(6, 7 , 8, 9); 145systems.update(4); 146var k = new testNewTarget(1); 147 148function funcAsm(value: number, value1: number, value2: number): number { 149 print(value); 150 print(value1); 151 print(value2); 152 func2(value1, value2); 153 func3(value1, value2); 154 func4(value1); 155 funcv(value, value1, value2, value); 156 var s: A = new A(1, 4); 157 var s1: B = new B(2, 3); 158 var s2: C = new C(3, 4, 5, 6, 7, 8); 159 var s3: C = new C(3, 4, 5, 6, 7, 8, 9, 10); 160 return value; 161} 162ArkTools.removeAOTFlag(funcAsm); 163funcAsm(1, 2); 164 165class TestCallThis0 { 166 foo(arg?: any) { 167 print(arg); 168 } 169} 170 171function testCallThis0() { 172 let t = new TestCallThis0(); 173 t.foo(); 174} 175 176testCallThis0(); 177