1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci// 3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci// You may obtain a copy of the License at 6425bb815Sopenharmony_ci// 7425bb815Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci// 9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci// limitations under the License. 14425bb815Sopenharmony_ci 15425bb815Sopenharmony_ciassert((function([a], b, {c}) {}).length === 3); 16425bb815Sopenharmony_ci 17425bb815Sopenharmony_cifunction f([a = "x", b = "y", c = "z"]) 18425bb815Sopenharmony_ci{ 19425bb815Sopenharmony_ci assert(a === "a"); 20425bb815Sopenharmony_ci assert(b === "b"); 21425bb815Sopenharmony_ci assert(c === "z"); 22425bb815Sopenharmony_ci} 23425bb815Sopenharmony_cif("ab") 24425bb815Sopenharmony_ci 25425bb815Sopenharmony_cifunction g({ ["x" + "y"]: { a = 4, b = 5 }, }) 26425bb815Sopenharmony_ci{ 27425bb815Sopenharmony_ci assert(a === 1); 28425bb815Sopenharmony_ci assert(b === 5); 29425bb815Sopenharmony_ci} 30425bb815Sopenharmony_cig({ xy: { a:1 } }); 31425bb815Sopenharmony_ci 32425bb815Sopenharmony_cifunction h([,,a,,b,,]) 33425bb815Sopenharmony_ci{ 34425bb815Sopenharmony_ci assert(a === 3); 35425bb815Sopenharmony_ci assert(b === 5); 36425bb815Sopenharmony_ci} 37425bb815Sopenharmony_cih([1,2,3,4,5,6,7,8]) 38425bb815Sopenharmony_ci 39425bb815Sopenharmony_cifunction i([a] = [42], b = a) 40425bb815Sopenharmony_ci{ 41425bb815Sopenharmony_ci assert(a === 42); 42425bb815Sopenharmony_ci assert(b === 42); 43425bb815Sopenharmony_ci} 44425bb815Sopenharmony_cii(); 45425bb815Sopenharmony_ci 46425bb815Sopenharmony_cifunction j(a, [[b = a, [c] = [b], { d } = { d:eval("c") }], e = d + 1] = [[]]) 47425bb815Sopenharmony_ci{ 48425bb815Sopenharmony_ci assert(a === 8); 49425bb815Sopenharmony_ci assert(b === 8); 50425bb815Sopenharmony_ci assert(c === 8); 51425bb815Sopenharmony_ci assert(d === 8); 52425bb815Sopenharmony_ci assert(e === 9); 53425bb815Sopenharmony_ci} 54425bb815Sopenharmony_cij(8); 55425bb815Sopenharmony_ci 56425bb815Sopenharmony_cifunction k([a = function() { return a; }]) 57425bb815Sopenharmony_ci{ 58425bb815Sopenharmony_ci assert(typeof a === "function"); 59425bb815Sopenharmony_ci assert(a() === a); 60425bb815Sopenharmony_ci} 61425bb815Sopenharmony_cik([]); 62425bb815Sopenharmony_ci 63425bb815Sopenharmony_cifunction l(a = 0, ...[b, c = 1, d = 4]) 64425bb815Sopenharmony_ci{ 65425bb815Sopenharmony_ci assert(a === 1); 66425bb815Sopenharmony_ci assert(b === 2); 67425bb815Sopenharmony_ci assert(c === 3); 68425bb815Sopenharmony_ci assert(d === 4); 69425bb815Sopenharmony_ci} 70425bb815Sopenharmony_cil(1,2,3); 71425bb815Sopenharmony_ci 72425bb815Sopenharmony_ciFunction("{a, x:b}","[c]", "{ 'dd':d, e = Math.cos(0)}", 73425bb815Sopenharmony_ci "assert(a === 1);" + 74425bb815Sopenharmony_ci "assert(b === undefined);" + 75425bb815Sopenharmony_ci "assert(c === 3);" + 76425bb815Sopenharmony_ci "assert(d === 4);" + 77425bb815Sopenharmony_ci "assert(e === 1);" 78425bb815Sopenharmony_ci)({a:1, b:3}, [3], {a:1, b:2, dd:4}); 79425bb815Sopenharmony_ci 80425bb815Sopenharmony_cifunction m() 81425bb815Sopenharmony_ci{ 82425bb815Sopenharmony_ci var prop_name = "x"; 83425bb815Sopenharmony_ci var def_val = 123; 84425bb815Sopenharmony_ci 85425bb815Sopenharmony_ci function g({[prop_name]: a, b = def_val }) 86425bb815Sopenharmony_ci { 87425bb815Sopenharmony_ci assert(a === 12); 88425bb815Sopenharmony_ci assert(b === 123); 89425bb815Sopenharmony_ci } 90425bb815Sopenharmony_ci 91425bb815Sopenharmony_ci g({ x:12 }) 92425bb815Sopenharmony_ci} 93425bb815Sopenharmony_cim(); 94