diff --git a/src/lex.js b/src/lex.js index efd8c76446..05ba48f475 100644 --- a/src/lex.js +++ b/src/lex.js @@ -888,6 +888,20 @@ Lexer.prototype = { ); } + if (isLegacy || isNonOctal) { + this.triggerAsync( + "error", + { + code: "E067", + line: this.line, + character: this.char, + data: [value + char] + }, + checks, + function() { return true; } + ); + } + value += char; index += 1; } else if (!isLegacy && value.length <= 2) { // 0x diff --git a/tests/test262/expectations.txt b/tests/test262/expectations.txt index 6740c73ca9..1a4ea5b7d9 100644 --- a/tests/test262/expectations.txt +++ b/tests/test262/expectations.txt @@ -9046,15 +9046,6 @@ test/language/statements/class/elements/syntax/valid/grammar-static-private-gen- test/language/statements/class/elements/syntax/valid/grammar-static-private-meth-prototype.js(default) test/language/statements/class/elements/syntax/valid/grammar-static-private-meth-prototype.js(strict mode) -test/language/literals/bigint/legacy-octal-like-invalid-00n.js(default) -test/language/literals/bigint/legacy-octal-like-invalid-01n.js(default) -test/language/literals/bigint/legacy-octal-like-invalid-07n.js(default) -test/language/literals/bigint/non-octal-like-invalid-0008n.js(default) -test/language/literals/bigint/non-octal-like-invalid-012348n.js(default) -test/language/literals/bigint/non-octal-like-invalid-08n.js(default) -test/language/literals/bigint/non-octal-like-invalid-08n.js(strict mode) -test/language/literals/bigint/non-octal-like-invalid-09n.js(default) -test/language/literals/bigint/non-octal-like-invalid-09n.js(strict mode) test/built-ins/RegExp/unicode_character_class_backspace_escape.js(default) test/built-ins/RegExp/unicode_character_class_backspace_escape.js(strict mode) test/intl402/NumberFormat/constructor-compactDisplay-compact.js(default) diff --git a/tests/unit/unstable/bigint.js b/tests/unit/unstable/bigint.js index a299cca847..3db2720ad6 100644 --- a/tests/unit/unstable/bigint.js +++ b/tests/unit/unstable/bigint.js @@ -74,6 +74,14 @@ exports.invalid = function (test) { .addError(1, 6, "Unrecoverable syntax error. (100% scanned).") .test("void 1e3n;", {esversion: 6, unstable: {bigint: true}}); + TestRun(test, "invalid legacy octal") + .addError(1, 6, "Malformed numeric literal: '01n'.") + .test("void 01n;", {esversion: 6, unstable: {bigint: true}}); + + TestRun(test, "invalid leading 0") + .addError(1, 6, "Malformed numeric literal: '08n'.") + .test("void 08n;", {esversion: 6, unstable: {bigint: true}}); + TestRun(test, "invalid hex digit") .addError(1, 8, "Malformed numeric literal: '0x'.") .addError(1, 8, "Missing semicolon.")