Skip to content

Commit

Permalink
[[FIX]] Disallow leading zeros in BigInts
Browse files Browse the repository at this point in the history
  • Loading branch information
jugglinmike authored and rwaldron committed Jul 29, 2020
1 parent b02a025 commit 3b2c8cf
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 9 deletions.
14 changes: 14 additions & 0 deletions src/lex.js
Expand Up @@ -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
Expand Down
9 changes: 0 additions & 9 deletions tests/test262/expectations.txt
Expand Up @@ -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)
Expand Down
8 changes: 8 additions & 0 deletions tests/unit/unstable/bigint.js
Expand Up @@ -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.")
Expand Down

0 comments on commit 3b2c8cf

Please sign in to comment.