14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_cideclare function print(arg: any): string; 174514f5e3Sopenharmony_ci 184514f5e3Sopenharmony_cifunction foo() { 194514f5e3Sopenharmony_ci let intArray: number[] = [1, 2, 3]; 204514f5e3Sopenharmony_ci print(intArray[0]); 214514f5e3Sopenharmony_ci 224514f5e3Sopenharmony_ci let doubleArray: number[] = [1.1, 2.2, 3.3]; 234514f5e3Sopenharmony_ci print(doubleArray[1]); 244514f5e3Sopenharmony_ci 254514f5e3Sopenharmony_ci let objectArray: object[] = [{}, {}, {}]; 264514f5e3Sopenharmony_ci print(objectArray[1]); 274514f5e3Sopenharmony_ci 284514f5e3Sopenharmony_ci let holeyArray: (number | undefined | object)[] = [1, , {}]; 294514f5e3Sopenharmony_ci print(holeyArray[1]); 304514f5e3Sopenharmony_ci} 314514f5e3Sopenharmony_ci 324514f5e3Sopenharmony_cifoo(); 334514f5e3Sopenharmony_ci 344514f5e3Sopenharmony_ci 354514f5e3Sopenharmony_ciclass C { 364514f5e3Sopenharmony_ci x: number; 374514f5e3Sopenharmony_ci constructor(v: number) { 384514f5e3Sopenharmony_ci this.x = v; 394514f5e3Sopenharmony_ci } 404514f5e3Sopenharmony_ci} 414514f5e3Sopenharmony_ci 424514f5e3Sopenharmony_cifunction testObject() { 434514f5e3Sopenharmony_ci let objArray: C[] = [new C(1), new C(2)]; 444514f5e3Sopenharmony_ci for (let i: number = 0; i < objArray.length; ++i) { 454514f5e3Sopenharmony_ci print(objArray[i].x); 464514f5e3Sopenharmony_ci } 474514f5e3Sopenharmony_ci} 484514f5e3Sopenharmony_ci 494514f5e3Sopenharmony_citestObject(); 504514f5e3Sopenharmony_ci 514514f5e3Sopenharmony_ciclass OrderedCollection { 524514f5e3Sopenharmony_ci elms: number[]; 534514f5e3Sopenharmony_ci constructor() { 544514f5e3Sopenharmony_ci this.elms = []; 554514f5e3Sopenharmony_ci } 564514f5e3Sopenharmony_ci add(elm: number):void { 574514f5e3Sopenharmony_ci this.elms.push(elm); 584514f5e3Sopenharmony_ci } 594514f5e3Sopenharmony_ci 604514f5e3Sopenharmony_ci at(index: number):number{ 614514f5e3Sopenharmony_ci return this.elms[index]; 624514f5e3Sopenharmony_ci } 634514f5e3Sopenharmony_ci} 644514f5e3Sopenharmony_ci 654514f5e3Sopenharmony_cilet constraints: OrderedCollection = new OrderedCollection(); 664514f5e3Sopenharmony_ciconstraints.add(0); 674514f5e3Sopenharmony_ciconstraints.add(1); 684514f5e3Sopenharmony_ciconstraints.add(2); 694514f5e3Sopenharmony_ciprint(constraints.at(0)); 704514f5e3Sopenharmony_ci 714514f5e3Sopenharmony_cifunction testReverse() { 724514f5e3Sopenharmony_ci const v0 = [100, 65536] 734514f5e3Sopenharmony_ci v0.reverse(); 744514f5e3Sopenharmony_ci v0[1] = v0; 754514f5e3Sopenharmony_ci v0.reverse(); 764514f5e3Sopenharmony_ci print("success"); 774514f5e3Sopenharmony_ci} 784514f5e3Sopenharmony_ci 794514f5e3Sopenharmony_citestReverse(); 804514f5e3Sopenharmony_ci 814514f5e3Sopenharmony_cifunction testArrayUsedAsProto() { 824514f5e3Sopenharmony_ci let v0 = [1]; 834514f5e3Sopenharmony_ci let o = { 844514f5e3Sopenharmony_ci __proto__: v0 854514f5e3Sopenharmony_ci } 864514f5e3Sopenharmony_ci v0.length = 0; 874514f5e3Sopenharmony_ci print("testArrayUsedAsProto success") 884514f5e3Sopenharmony_ci} 894514f5e3Sopenharmony_ci 904514f5e3Sopenharmony_citestArrayUsedAsProto(); 914514f5e3Sopenharmony_ci 924514f5e3Sopenharmony_cifunction testProto1() { 934514f5e3Sopenharmony_ci let a = [1, 2, 3]; 944514f5e3Sopenharmony_ci let obj = {}; 954514f5e3Sopenharmony_ci obj.__proto__ = a; 964514f5e3Sopenharmony_ci print(a[0]); 974514f5e3Sopenharmony_ci print(ArkTools.getElementsKind(a)); 984514f5e3Sopenharmony_ci} 994514f5e3Sopenharmony_ci 1004514f5e3Sopenharmony_ciprint(ArkTools.isAOTCompiled(testProto1)); 1014514f5e3Sopenharmony_citestProto1(); 1024514f5e3Sopenharmony_ci 1034514f5e3Sopenharmony_ci 1044514f5e3Sopenharmony_cifunction testProto2() { 1054514f5e3Sopenharmony_ci let obj = {}; 1064514f5e3Sopenharmony_ci for (let i = 0; i < 4; i++) { 1074514f5e3Sopenharmony_ci let a = [1, 2, 3]; 1084514f5e3Sopenharmony_ci if (i == 2) { 1094514f5e3Sopenharmony_ci obj.__proto__ = a; 1104514f5e3Sopenharmony_ci a[1] = 1.5 1114514f5e3Sopenharmony_ci } 1124514f5e3Sopenharmony_ci print(a[0] + 1); 1134514f5e3Sopenharmony_ci print(ArkTools.getElementsKind(a)); 1144514f5e3Sopenharmony_ci } 1154514f5e3Sopenharmony_ci} 1164514f5e3Sopenharmony_ci 1174514f5e3Sopenharmony_ciprint(ArkTools.isAOTCompiled(testProto2)); 1184514f5e3Sopenharmony_citestProto2(); 119