1/* 2 * Copyright (c) 2024 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 */ 15 16-a ** 2; 17 18< 2; 19 20function f() { 21 var a = 1--; 22 var a = eval++; 23 var a = arguments--; 24 var a = ++1; 25 var a = --arguments; 26 var a = ++eval; 27 28 delete a 29 delete this.#a 30} 31 32import.meta 33import.abc 34 35(x ?? null || 1); 36(x || null ?? 1); 37 38let a = ({x, y...} = 7) => 0; 39let a = (x, 10) => 0; 40let a = (x, ...1) => 0; 41let a = (...a, x); 42let a = (); 43 44a?.[1+2); 45a?.`abc`; 46 47let {async 48 a, b} = {a: 1, b:2}; 49 50const obj = { 51 get a(x) { return x + 1; }, 52 set a() { }, 53 b: 1 54}; 55 56let {*a} = 0; 57let {a(){}, b} = 0; 58let {public } = 0; 59 60[a, [a, b]] = [1, 2] ({...r, c} = {a: 10}); 61 62({a, ...r, b} = {a: 10, b: 20}) => expression; 63({a, ...r, b} = 7) => expression; 64([a, b = await 7]) => expression; 65({...x, b}) => expression; 66(...x = 4, [...x, b]) => expression; 67(async f = await b()) => expression; 68async (...x = await 4, a) => expression; 69async (x = await 7) => expression; 70(a, b) => { 7 ]; 71// This should be the last line to check syntax error about missing '}' 72 73/* @@? 16:4 Error SyntaxError: Illegal expression. Wrap left hand side or entire exponentiation in parentheses. */ 74/* @@? 18:1 Error SyntaxError: Unexpected token: '<'. */ 75/* @@? 21:14 Error SyntaxError: Invalid left-hand side operator. */ 76/* @@? 22:17 Error SyntaxError: Assigning to 'eval' in strict mode is invalid */ 77/* @@? 23:22 Error SyntaxError: Assigning to 'arguments' in strict mode is invalid */ 78/* @@? 24:16 Error SyntaxError: Invalid left-hand side in prefix operation */ 79/* @@? 25:24 Error SyntaxError: Assigning to 'arguments' in strict mode is invalid */ 80/* @@? 26:19 Error SyntaxError: Assigning to 'eval' in strict mode is invalid */ 81/* @@? 29:5 Error SyntaxError: Deleting local variable in strict mode */ 82/* @@? 30:1 Error SyntaxError: Private fields can not be deleted */ 83/* @@? 32:1 Error SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' */ 84/* @@? 32:7 Error SyntaxError: 'import.Meta' may appear only with 'sourceType: module' */ 85/* @@? 33:1 Error SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' */ 86/* @@? 33:7 Error SyntaxError: 'import.Meta' may appear only with 'sourceType: module' */ 87/* @@? 33:8 Error SyntaxError: The only valid meta property for import is import.Meta */ 88/* @@? 35:16 Error SyntaxError: Nullish coalescing operator ?? requires parens when mixing with logical operators. */ 89/* @@? 36:16 Error SyntaxError: Nullish coalescing operator ?? requires parens when mixing with logical operators. */ 90/* @@? 38:15 Error SyntaxError: Unexpected token, expected: ':'. */ 91/* @@? 38:18 Error SyntaxError: Unexpected token: '}'. */ 92/* @@? 39:17 Error SyntaxError: Insufficient formal parameter in arrow function. */ 93/* @@? 40:16 Error SyntaxError: Unexpected token, expected an identifier. */ 94/* @@? 40:16 Error SyntaxError: Unexpected token, expected: ')'. */ 95/* @@? 40:17 Error SyntaxError: Unexpected token ')'. */ 96/* @@? 40:17 Error SyntaxError: Unexpected token: ')'. */ 97/* @@? 40:19 Error SyntaxError: Unexpected token: '=>'. */ 98/* @@? 41:14 Error SyntaxError: Rest parameter must be the last formal parameter. */ 99/* @@? 41:14 Error SyntaxError: Unexpected token, expected: '=>'. */ 100/* @@? 41:17 Error SyntaxError: Unexpected token ')'. */ 101/* @@? 41:17 Error SyntaxError: Unexpected token: ')'. */ 102/* @@? 42:11 Error SyntaxError: Unexpected token, expected: '=>'. */ 103/* @@? 44:8 Error SyntaxError: Unexpected token, expected: ']'. */ 104/* @@? 45:4 Error SyntaxError: Tagged Template Literals are not allowed in optionalChain */ 105/* @@? 48:5 Error SyntaxError: Async methods cannot have a line terminator between 'async' and the property name */ 106/* @@? 48:6 Error SyntaxError: Unexpected identifier */ 107/* @@? 48:6 Error SyntaxError: Unexpected token, expected: ':'. */ 108/* @@? 47:5 Error SyntaxError: Invalid left-hand side in array destructuring pattern */ 109/* @@? 51:31 Error SyntaxError: Getter must not have formal parameters */ 110/* @@? 52:16 Error SyntaxError: Setter must have exactly one formal parameter */ 111/* @@? 56:6 Error SyntaxError: Unexpected token */ 112/* @@? 56:8 Error SyntaxError: Unexpected identifier */ 113/* @@? 56:8 Error SyntaxError: Unexpected token, expected: ':'. */ 114/* @@? 56:10 Error SyntaxError: Unexpected token, expected an identifier. */ 115/* @@? 56:13 Error SyntaxError: Unexpected token, expected ',' or '}' */ 116/* @@? 57:1 Error SyntaxError: Missing initializer in destructuring declaration */ 117/* @@? 57:7 Error SyntaxError: Object pattern can't contain methods */ 118/* @@? 57:5 Error SyntaxError: Invalid left-hand side in array destructuring pattern */ 119/* @@? 58:6 Error SyntaxError: Unexpected token, expected an identifier. */ 120/* @@? 60:23 Error SyntaxError: Invalid left-hand side in array destructuring pattern */ 121/* @@? 62:33 Error SyntaxError: Invalid destructuring assignment target */ 122/* @@? 62:33 Error SyntaxError: Unexpected ArrowParameter element */ 123/* @@? 63:20 Error SyntaxError: Invalid destructuring assignment target */ 124/* @@? 63:20 Error SyntaxError: Unexpected ArrowParameter element */ 125/* @@? 64:16 Error SyntaxError: Unexpected token, expected ',' or ']' */ 126/* @@? 65:13 Error SyntaxError: Invalid destructuring assignment target */ 127/* @@? 65:13 Error SyntaxError: Unexpected ArrowParameter element */ 128/* @@? 66:7 Error SyntaxError: Unexpected token, expected: ')'. */ 129/* @@? 66:10 Error SyntaxError: Rest parameter must be the last formal parameter. */ 130/* @@? 66:10 Error SyntaxError: Unexpected token, expected: '=>'. */ 131/* @@? 66:21 Error SyntaxError: Unexpected token ')'. */ 132/* @@? 66:21 Error SyntaxError: Unexpected token: ')'. */ 133/* @@? 66:23 Error SyntaxError: Unexpected token: '=>'. */ 134/* @@? 67:10 Error SyntaxError: Unexpected token, expected: '=>'. */ 135/* @@? 67:23 Error SyntaxError: Unexpected token, arrow (=>) */ 136/* @@? 68:27 Error SyntaxError: Invalid rest element. */ 137/* @@? 68:27 Error SyntaxError: Unexpected ArrowParameter element */ 138/* @@? 69:21 Error SyntaxError: await is not allowed in arrow function parameters */ 139/* @@? 69:21 Error SyntaxError: Unexpected ArrowParameter element */ 140/* @@? 70:15 Error SyntaxError: Unexpected token ']'. */ 141/* @@? 70:15 Error SyntaxError: Unexpected token: ']'. */ 142/* @@? 143:1 Error SyntaxError: Unexpected token, expected: '}'. */ 143