14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2021 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_ci/* 174514f5e3Sopenharmony_ci * @tc.name:class 184514f5e3Sopenharmony_ci * @tc.desc:test class 194514f5e3Sopenharmony_ci * @tc.type: FUNC 204514f5e3Sopenharmony_ci * @tc.require: issueI5NO8G 214514f5e3Sopenharmony_ci */ 224514f5e3Sopenharmony_ciclass Parent { 234514f5e3Sopenharmony_ci constructor(x) { 244514f5e3Sopenharmony_ci this.x = x; 254514f5e3Sopenharmony_ci } 264514f5e3Sopenharmony_ci 274514f5e3Sopenharmony_ci static toString() { 284514f5e3Sopenharmony_ci return 'parent'; 294514f5e3Sopenharmony_ci } 304514f5e3Sopenharmony_ci} 314514f5e3Sopenharmony_ci 324514f5e3Sopenharmony_ciclass Child extends Parent { 334514f5e3Sopenharmony_ci constructor(x, y) { 344514f5e3Sopenharmony_ci super(x); 354514f5e3Sopenharmony_ci this.y = y; 364514f5e3Sopenharmony_ci } 374514f5e3Sopenharmony_ci 384514f5e3Sopenharmony_ci value() { 394514f5e3Sopenharmony_ci return this.x * this.y; 404514f5e3Sopenharmony_ci } 414514f5e3Sopenharmony_ci 424514f5e3Sopenharmony_ci static toString() { 434514f5e3Sopenharmony_ci return super.toString() + ' child'; 444514f5e3Sopenharmony_ci } 454514f5e3Sopenharmony_ci} 464514f5e3Sopenharmony_ci 474514f5e3Sopenharmony_civar c = new Child(2, 3); 484514f5e3Sopenharmony_ciprint(c.value()); 494514f5e3Sopenharmony_ciprint(Child.toString()); 504514f5e3Sopenharmony_ci 514514f5e3Sopenharmony_citry { 524514f5e3Sopenharmony_ci class C { 534514f5e3Sopenharmony_ci a = 1; 544514f5e3Sopenharmony_ci } 554514f5e3Sopenharmony_ci 564514f5e3Sopenharmony_ci class D extends C { 574514f5e3Sopenharmony_ci constructo() { 584514f5e3Sopenharmony_ci delete super.a; 594514f5e3Sopenharmony_ci } 604514f5e3Sopenharmony_ci } 614514f5e3Sopenharmony_ci 624514f5e3Sopenharmony_ci d = new D(); 634514f5e3Sopenharmony_ci} catch (err) { 644514f5e3Sopenharmony_ci print("PASS"); 654514f5e3Sopenharmony_ci} 664514f5e3Sopenharmony_ci 674514f5e3Sopenharmony_ciclass A { 684514f5e3Sopenharmony_ci a = 10; 694514f5e3Sopenharmony_ci} 704514f5e3Sopenharmony_ci 714514f5e3Sopenharmony_ciclass B extends A { 724514f5e3Sopenharmony_ci constructor() { 734514f5e3Sopenharmony_ci let a = "a"; 744514f5e3Sopenharmony_ci super[a] = 1; 754514f5e3Sopenharmony_ci } 764514f5e3Sopenharmony_ci} 774514f5e3Sopenharmony_ci 784514f5e3Sopenharmony_civar par = new A; 794514f5e3Sopenharmony_ciprint(par.a); 804514f5e3Sopenharmony_ci 814514f5e3Sopenharmony_cifor (let i = 0; i < 2; i++) { 824514f5e3Sopenharmony_ci class Cls { 834514f5e3Sopenharmony_ci foo() { 844514f5e3Sopenharmony_ci } 854514f5e3Sopenharmony_ci } 864514f5e3Sopenharmony_ci 874514f5e3Sopenharmony_ci if (i == 0) { 884514f5e3Sopenharmony_ci Cls.prototype.foo.x = 1; 894514f5e3Sopenharmony_ci } 904514f5e3Sopenharmony_ci print(Cls.prototype.foo.x); 914514f5e3Sopenharmony_ci} 924514f5e3Sopenharmony_ci 934514f5e3Sopenharmony_ciclass Class2022 { 944514f5e3Sopenharmony_ci public = 12; 954514f5e3Sopenharmony_ci #private = 34; 964514f5e3Sopenharmony_ci static static_public = 56; 974514f5e3Sopenharmony_ci static #static_private = 78; 984514f5e3Sopenharmony_ci 994514f5e3Sopenharmony_ci static test(obj) { 1004514f5e3Sopenharmony_ci print(obj.public); 1014514f5e3Sopenharmony_ci print(obj.#private); 1024514f5e3Sopenharmony_ci print(obj.static_public); 1034514f5e3Sopenharmony_ci print(obj.#static_private); 1044514f5e3Sopenharmony_ci } 1054514f5e3Sopenharmony_ci} 1064514f5e3Sopenharmony_ci 1074514f5e3Sopenharmony_civar class2022 = new Class2022(); 1084514f5e3Sopenharmony_citry { 1094514f5e3Sopenharmony_ci Class2022.test(class2022); 1104514f5e3Sopenharmony_ci} catch (err) { 1114514f5e3Sopenharmony_ci print(err.name); 1124514f5e3Sopenharmony_ci} 1134514f5e3Sopenharmony_citry { 1144514f5e3Sopenharmony_ci Class2022.test(new Proxy(class2022, {})); 1154514f5e3Sopenharmony_ci} catch (err) { 1164514f5e3Sopenharmony_ci print(err.name); 1174514f5e3Sopenharmony_ci} 1184514f5e3Sopenharmony_ci 1194514f5e3Sopenharmony_cifunction foo() { 1204514f5e3Sopenharmony_ci 1214514f5e3Sopenharmony_ci} 1224514f5e3Sopenharmony_ci 1234514f5e3Sopenharmony_ciclass Class2024 { 1244514f5e3Sopenharmony_ci static #g; 1254514f5e3Sopenharmony_ci a = [1, 2, 3]; 1264514f5e3Sopenharmony_ci #c = foo; 1274514f5e3Sopenharmony_ci} 1284514f5e3Sopenharmony_ci 1294514f5e3Sopenharmony_civar class2024 = new Class2024(); 1304514f5e3Sopenharmony_ciprint("test successful!"); 1314514f5e3Sopenharmony_ci 1324514f5e3Sopenharmony_ciclass StaticTest { 1334514f5e3Sopenharmony_ci static set a(a) { 1344514f5e3Sopenharmony_ci print(a); 1354514f5e3Sopenharmony_ci } 1364514f5e3Sopenharmony_ci 1374514f5e3Sopenharmony_ci static a = 1; // expect no print 1384514f5e3Sopenharmony_ci static length = 1; // expect no TypeError 1394514f5e3Sopenharmony_ci} 1404514f5e3Sopenharmony_ci 1414514f5e3Sopenharmony_cilet o = { 1424514f5e3Sopenharmony_ci toString() { 1434514f5e3Sopenharmony_ci class C { 1444514f5e3Sopenharmony_ci #p(a, b) { 1454514f5e3Sopenharmony_ci } 1464514f5e3Sopenharmony_ci } 1474514f5e3Sopenharmony_ci } 1484514f5e3Sopenharmony_ci} 1494514f5e3Sopenharmony_cilet o1 = { 1504514f5e3Sopenharmony_ci [o](a, b) { 1514514f5e3Sopenharmony_ci } 1524514f5e3Sopenharmony_ci} 1534514f5e3Sopenharmony_ciprint("test privateproperty class sucecess") 1544514f5e3Sopenharmony_ci 1554514f5e3Sopenharmony_ci// TypeError 1564514f5e3Sopenharmony_citry { 1574514f5e3Sopenharmony_ci const v13 = new ArrayBuffer(16); 1584514f5e3Sopenharmony_ci 1594514f5e3Sopenharmony_ci function F14(a16, a17) { 1604514f5e3Sopenharmony_ci if (!new.target) { 1614514f5e3Sopenharmony_ci throw 'must be called with new'; 1624514f5e3Sopenharmony_ci } 1634514f5e3Sopenharmony_ci 1644514f5e3Sopenharmony_ci function f18(a19, a20, a21) { 1654514f5e3Sopenharmony_ci } 1664514f5e3Sopenharmony_ci 1674514f5e3Sopenharmony_ci const v23 = `-2`; 1684514f5e3Sopenharmony_ci 1694514f5e3Sopenharmony_ci async function f25(a26, a27, a28, a29) { 1704514f5e3Sopenharmony_ci return v23; 1714514f5e3Sopenharmony_ci } 1724514f5e3Sopenharmony_ci 1734514f5e3Sopenharmony_ci f25(); 1744514f5e3Sopenharmony_ci const v33 = new BigUint64Array(31); 1754514f5e3Sopenharmony_ci const o34 = { 1764514f5e3Sopenharmony_ci ...v33, 1774514f5e3Sopenharmony_ci ...v33, 1784514f5e3Sopenharmony_ci }; 1794514f5e3Sopenharmony_ci Object.defineProperty(o34, 4, { set: f18 }); 1804514f5e3Sopenharmony_ci } 1814514f5e3Sopenharmony_ci 1824514f5e3Sopenharmony_ci const v35 = new F14(ArrayBuffer); 1834514f5e3Sopenharmony_ci const t33 = 64n; 1844514f5e3Sopenharmony_ci new t33(v35, v13); 1854514f5e3Sopenharmony_ci} catch (err) { 1864514f5e3Sopenharmony_ci print(err.name); 1874514f5e3Sopenharmony_ci} 1884514f5e3Sopenharmony_ci 1894514f5e3Sopenharmony_ci// TypeError 1904514f5e3Sopenharmony_citry { 1914514f5e3Sopenharmony_ci class C0 { 1924514f5e3Sopenharmony_ci constructor(a2) { 1934514f5e3Sopenharmony_ci const v5 = new ArrayBuffer(10); 1944514f5e3Sopenharmony_ci 1954514f5e3Sopenharmony_ci function F6(a8, a9) { 1964514f5e3Sopenharmony_ci if (!new.target) { 1974514f5e3Sopenharmony_ci throw 'must be called with new'; 1984514f5e3Sopenharmony_ci } 1994514f5e3Sopenharmony_ci const v12 = new BigUint64Array(32); 2004514f5e3Sopenharmony_ci const o13 = { 2014514f5e3Sopenharmony_ci ...v12, 2024514f5e3Sopenharmony_ci }; 2034514f5e3Sopenharmony_ci Object.defineProperty(o13, 4, { set: F6 }); 2044514f5e3Sopenharmony_ci } 2054514f5e3Sopenharmony_ci 2064514f5e3Sopenharmony_ci new F6(ArrayBuffer, v5); 2074514f5e3Sopenharmony_ci new a2(); 2084514f5e3Sopenharmony_ci } 2094514f5e3Sopenharmony_ci } 2104514f5e3Sopenharmony_ci 2114514f5e3Sopenharmony_ci new C0(C0); 2124514f5e3Sopenharmony_ci} catch (err) { 2134514f5e3Sopenharmony_ci print(err.name); 2144514f5e3Sopenharmony_ci} 2154514f5e3Sopenharmony_ci 2164514f5e3Sopenharmony_ci// TypeError 2174514f5e3Sopenharmony_citry { 2184514f5e3Sopenharmony_ci const v1 = new WeakSet(); 2194514f5e3Sopenharmony_ci 2204514f5e3Sopenharmony_ci function f2() { 2214514f5e3Sopenharmony_ci return v1; 2224514f5e3Sopenharmony_ci } 2234514f5e3Sopenharmony_ci 2244514f5e3Sopenharmony_ci new SharedArrayBuffer(24); 2254514f5e3Sopenharmony_ci const o8 = {}; 2264514f5e3Sopenharmony_ci for (let i11 = -57, i12 = 10; i11 < i12; i12--) { 2274514f5e3Sopenharmony_ci o8[i12] >>= i12; 2284514f5e3Sopenharmony_ci } 2294514f5e3Sopenharmony_ci 2304514f5e3Sopenharmony_ci class C20 extends f2 { 2314514f5e3Sopenharmony_ci } 2324514f5e3Sopenharmony_ci 2334514f5e3Sopenharmony_ci new C20(83.14, 4.14, -7.50); 2344514f5e3Sopenharmony_ci C20(54.1); 2354514f5e3Sopenharmony_ci BigUint64Array(); 2364514f5e3Sopenharmony_ci} catch (err) { 2374514f5e3Sopenharmony_ci print(err.name); 2384514f5e3Sopenharmony_ci} 239