From 490798a26d713c51205c7a510ee0ca99ab84dd15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Rodr=C3=ADguez?= <13141462+gonzarodriguezt@users.noreply.github.com> Date: Tue, 24 Sep 2019 19:32:50 -0400 Subject: [PATCH] =?UTF-8?q?[parser]=20Disallow=20numeric=20separators=20in?= =?UTF-8?q?=20legacy=20octal=20like=20inte=E2=80=A6=20(#10493)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Disallow numeric separators in lols * Update whitelist * Rename test * Better syntax when checking --- packages/babel-parser/src/tokenizer/index.js | 4 ++-- .../numeric-separator/invalid-legacy-octal-literal/input.js | 1 + .../invalid-legacy-octal-literal/options.json | 1 + scripts/tests/test262/test262_whitelist.txt | 6 ------ 4 files changed, 4 insertions(+), 8 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index 6d2c046457..3fdced8aaf 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -1035,8 +1035,8 @@ export default class Tokenizer extends LocationParser { next = this.input.charCodeAt(this.state.pos); } - // disallow numeric separators in non octal decimals - if (this.hasPlugin("numericSeparator") && isNonOctalDecimalInt) { + // disallow numeric separators in non octal decimals and legacy octal likes + if (this.hasPlugin("numericSeparator") && (octal || isNonOctalDecimalInt)) { const underscorePos = this.input .slice(start, this.state.pos) .indexOf("_"); diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js new file mode 100644 index 0000000000..909c1baacf --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js @@ -0,0 +1 @@ +00_0 \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json new file mode 100644 index 0000000000..5a4fb4525d --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json @@ -0,0 +1 @@ +{ "throws": "Numeric separator can not be used after leading 0 (1:2)" } diff --git a/scripts/tests/test262/test262_whitelist.txt b/scripts/tests/test262/test262_whitelist.txt index 3eb50c7c2d..1082e285e6 100644 --- a/scripts/tests/test262/test262_whitelist.txt +++ b/scripts/tests/test262/test262_whitelist.txt @@ -104,12 +104,6 @@ language/expressions/object/method-definition/private-name-early-error-gen-insid language/expressions/object/method-definition/private-name-early-error-gen-inside-class.js(strict mode) language/expressions/object/method-definition/private-name-early-error-method-inside-class.js(default) language/expressions/object/method-definition/private-name-early-error-method-inside-class.js(strict mode) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-00-err.js(default) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-01-err.js(default) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-07-err.js(default) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-0_0-err.js(default) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-0_1-err.js(default) -language/literals/numeric/numeric-separators/numeric-separator-literal-lol-0_7-err.js(default) language/module-code/privatename-not-valid-earlyerr-module-1.js(default) language/module-code/privatename-not-valid-earlyerr-module-1.js(strict mode) language/module-code/privatename-not-valid-earlyerr-module-2.js(default)