From b344f6205698fac7a2a73a2da00891bfdeed560e Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 26 May 2017 16:37:05 -0400 Subject: [PATCH] NumberLiteralSeparator: Stage 1 feature plugin. Closes gh-538 (#541) * NumberLiteralSeparator: Stage 1 feature plugin Signed-off-by: Rick Waldron * fix-up per review Signed-off-by: Rick Waldron * nit: forbiddenNumericLiteralSeparatorSibling -> forbiddenNumericLiteralSeparatorSiblings Signed-off-by: Rick Waldron * fix-up to change includes -> indexOf Signed-off-by: Rick Waldron --- README.md | 1 + src/tokenizer/index.js | 36 +++++++++- .../invalid-0/actual.js | 1 + .../invalid-0/options.json | 1 + .../invalid-1/actual.js | 1 + .../invalid-1/options.json | 1 + .../invalid-10/actual.js | 1 + .../invalid-10/options.json | 1 + .../invalid-11/actual.js | 1 + .../invalid-11/options.json | 1 + .../invalid-12/actual.js | 1 + .../invalid-12/options.json | 1 + .../invalid-13/actual.js | 1 + .../invalid-13/options.json | 1 + .../invalid-14/actual.js | 1 + .../invalid-14/options.json | 1 + .../invalid-15/actual.js | 1 + .../invalid-15/options.json | 1 + .../invalid-16/actual.js | 1 + .../invalid-16/options.json | 1 + .../invalid-17/actual.js | 1 + .../invalid-17/options.json | 1 + .../invalid-18/actual.js | 1 + .../invalid-18/options.json | 1 + .../invalid-19/actual.js | 1 + .../invalid-19/options.json | 1 + .../invalid-2/actual.js | 1 + .../invalid-2/options.json | 1 + .../invalid-20/actual.js | 1 + .../invalid-20/options.json | 1 + .../invalid-21/actual.js | 1 + .../invalid-21/options.json | 1 + .../invalid-22/actual.js | 1 + .../invalid-22/options.json | 1 + .../invalid-23/actual.js | 1 + .../invalid-23/options.json | 1 + .../invalid-24/actual.js | 1 + .../invalid-24/options.json | 1 + .../invalid-25/actual.js | 1 + .../invalid-25/options.json | 1 + .../invalid-26/actual.js | 1 + .../invalid-26/options.json | 1 + .../invalid-27/actual.js | 1 + .../invalid-27/options.json | 1 + .../invalid-3/actual.js | 1 + .../invalid-3/options.json | 1 + .../invalid-4/actual.js | 1 + .../invalid-4/options.json | 1 + .../invalid-5/actual.js | 1 + .../invalid-5/options.json | 1 + .../invalid-6/actual.js | 1 + .../invalid-6/options.json | 1 + .../invalid-7/actual.js | 1 + .../invalid-7/options.json | 1 + .../invalid-8/actual.js | 1 + .../invalid-8/options.json | 1 + .../invalid-9/actual.js | 1 + .../invalid-9/options.json | 1 + .../numeric-literal-separator/options.json | 3 + .../valid-0/actual.js | 1 + .../valid-0/expected.json | 69 +++++++++++++++++++ .../valid-1/actual.js | 1 + .../valid-1/expected.json | 69 +++++++++++++++++++ .../valid-10/actual.js | 1 + .../valid-10/expected.json | 69 +++++++++++++++++++ .../valid-11/actual.js | 1 + .../valid-11/expected.json | 69 +++++++++++++++++++ .../valid-2/actual.js | 1 + .../valid-2/expected.json | 69 +++++++++++++++++++ .../valid-3/actual.js | 1 + .../valid-3/expected.json | 69 +++++++++++++++++++ .../valid-4/actual.js | 1 + .../valid-4/expected.json | 69 +++++++++++++++++++ .../valid-5/actual.js | 1 + .../valid-5/expected.json | 69 +++++++++++++++++++ .../valid-6/actual.js | 1 + .../valid-6/expected.json | 69 +++++++++++++++++++ .../valid-7/actual.js | 1 + .../valid-7/expected.json | 69 +++++++++++++++++++ .../valid-8/actual.js | 1 + .../valid-8/expected.json | 69 +++++++++++++++++++ .../valid-9/actual.js | 1 + .../valid-9/expected.json | 69 +++++++++++++++++++ 83 files changed, 935 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-0/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-0/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-1/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-1/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-10/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-10/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-11/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-11/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-12/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-12/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-13/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-13/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-14/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-14/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-15/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-15/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-16/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-16/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-17/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-17/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-18/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-18/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-19/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-19/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-2/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-2/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-20/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-20/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-21/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-21/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-22/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-22/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-23/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-23/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-24/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-24/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-25/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-25/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-26/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-26/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-27/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-27/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-3/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-3/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-4/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-4/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-5/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-5/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-6/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-6/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-7/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-7/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-8/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-8/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-9/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/invalid-9/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/options.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-0/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-0/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-1/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-1/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-10/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-10/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-11/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-11/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-2/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-2/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-3/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-3/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-4/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-4/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-5/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-5/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-6/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-6/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-7/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-7/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-8/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-8/expected.json create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-9/actual.js create mode 100644 test/fixtures/experimental/numeric-literal-separator/valid-9/expected.json diff --git a/README.md b/README.md index 034e0c4016..fd3ee86de3 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,7 @@ require("babylon").parse("code", { - `functionBind` - `functionSent` - `dynamicImport` + - `numericSeparator` ([proposal](https://github.com/samuelgoto/proposal-numeric-separator)) ### FAQ diff --git a/src/tokenizer/index.js b/src/tokenizer/index.js index 7727032fcc..b41067c43b 100644 --- a/src/tokenizer/index.js +++ b/src/tokenizer/index.js @@ -13,6 +13,23 @@ import { SourceLocation } from "../util/location"; import { lineBreak, lineBreakG, isNewLine, nonASCIIwhitespace } from "../util/whitespace"; import State from "./state"; + +// The following character codes are forbidden from being +// an immediate sibling of NumericLiteralSeparator _ + +const forbiddenNumericLiteralSeparatorSiblings = [ + 46, // . + 66, // B + 69, // E + 79, // O + 88, // X + 95, // _ (multiple separators are not allowed) + 98, // b + 101, // e + 111, // o + 120, // x +]; + // Object type used to represent tokens. Note that normally, tokens // simply exist as properties on the parser object. This is only // used for the onToken callback and the external tokenizer. @@ -555,6 +572,23 @@ export default class Tokenizer extends LocationParser { for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { const code = this.input.charCodeAt(this.state.pos); let val; + + if (this.hasPlugin("numericSeparator")) { + const prev = this.input.charCodeAt(this.state.pos - 1); + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 95) { + if ((forbiddenNumericLiteralSeparatorSiblings.indexOf(prev) > -1) || + (forbiddenNumericLiteralSeparatorSiblings.indexOf(next) > -1) || + Number.isNaN(next)) { + this.raise(this.state.pos, "Invalid NumericLiteralSeparator"); + } + + // Ignore this _ character + ++this.state.pos; + continue; + } + } + if (code >= 97) { val = code - 97 + 10; // a } else if (code >= 65) { @@ -608,7 +642,7 @@ export default class Tokenizer extends LocationParser { if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.state.pos, "Identifier directly after number"); - const str = this.input.slice(start, this.state.pos); + const str = this.input.slice(start, this.state.pos).replace(/_/g, ""); let val; if (isFloat) { val = parseFloat(str); diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-0/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-0/actual.js new file mode 100644 index 0000000000..c9cc894a14 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-0/actual.js @@ -0,0 +1 @@ +1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-0/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-0/options.json new file mode 100644 index 0000000000..98f3821203 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-0/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:1)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-1/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-1/actual.js new file mode 100644 index 0000000000..812b799044 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-1/actual.js @@ -0,0 +1 @@ +1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-1/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-1/options.json new file mode 100644 index 0000000000..38a0b25968 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-1/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:3)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-10/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-10/actual.js new file mode 100644 index 0000000000..f650ef5da9 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-10/actual.js @@ -0,0 +1 @@ +0x1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-10/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-10/options.json new file mode 100644 index 0000000000..c338d94e7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-10/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-11/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-11/actual.js new file mode 100644 index 0000000000..256223f609 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-11/actual.js @@ -0,0 +1 @@ +0xa_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-11/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-11/options.json new file mode 100644 index 0000000000..c338d94e7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-11/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-12/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-12/actual.js new file mode 100644 index 0000000000..207475c37c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-12/actual.js @@ -0,0 +1 @@ +0x_a_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-12/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-12/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-12/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-13/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-13/actual.js new file mode 100644 index 0000000000..e8d858ceb4 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-13/actual.js @@ -0,0 +1 @@ +0x__1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-13/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-13/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-13/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-14/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-14/actual.js new file mode 100644 index 0000000000..6ebcc5c3b0 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-14/actual.js @@ -0,0 +1 @@ +0x_1__1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-14/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-14/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-14/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-15/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-15/actual.js new file mode 100644 index 0000000000..8c634a9b35 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-15/actual.js @@ -0,0 +1 @@ +0x_1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-15/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-15/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-15/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-16/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-16/actual.js new file mode 100644 index 0000000000..5f57dcea0e --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-16/actual.js @@ -0,0 +1 @@ +0o_1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-16/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-16/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-16/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-17/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-17/actual.js new file mode 100644 index 0000000000..a28b7cad4f --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-17/actual.js @@ -0,0 +1 @@ +0o_11 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-17/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-17/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-17/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-18/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-18/actual.js new file mode 100644 index 0000000000..2b1b875436 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-18/actual.js @@ -0,0 +1 @@ +0o_01_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-18/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-18/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-18/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-19/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-19/actual.js new file mode 100644 index 0000000000..da9556b3c2 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-19/actual.js @@ -0,0 +1 @@ +0b_0_1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-19/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-19/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-19/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-2/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-2/actual.js new file mode 100644 index 0000000000..0e5fddb35e --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-2/actual.js @@ -0,0 +1 @@ +1_1__ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-2/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-2/options.json new file mode 100644 index 0000000000..38a0b25968 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-2/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:3)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-20/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-20/actual.js new file mode 100644 index 0000000000..2562e4dd9b --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-20/actual.js @@ -0,0 +1 @@ +0b_01_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-20/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-20/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-20/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-21/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-21/actual.js new file mode 100644 index 0000000000..202ace50bd --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-21/actual.js @@ -0,0 +1 @@ +0b01_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-21/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-21/options.json new file mode 100644 index 0000000000..02c2fdc2bb --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-21/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:6)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-22/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-22/actual.js new file mode 100644 index 0000000000..72b11abe72 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-22/actual.js @@ -0,0 +1 @@ +0o1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-22/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-22/options.json new file mode 100644 index 0000000000..c338d94e7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-22/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-23/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-23/actual.js new file mode 100644 index 0000000000..2de75d54ec --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-23/actual.js @@ -0,0 +1 @@ +0o_1_1_ \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-23/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-23/options.json new file mode 100644 index 0000000000..3a8821e671 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-23/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-24/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-24/actual.js new file mode 100644 index 0000000000..b31c6f7290 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-24/actual.js @@ -0,0 +1 @@ +._1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-24/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-24/options.json new file mode 100644 index 0000000000..e9dcc85b6f --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-24/options.json @@ -0,0 +1 @@ +{ "throws": "Unexpected token (1:0)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-25/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-25/actual.js new file mode 100644 index 0000000000..105d580ea8 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-25/actual.js @@ -0,0 +1 @@ +0o01_8 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-25/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-25/options.json new file mode 100644 index 0000000000..b284ab4dae --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-25/options.json @@ -0,0 +1 @@ +{ "throws": "Unexpected token, expected ; (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-26/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-26/actual.js new file mode 100644 index 0000000000..0a3a15970b --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-26/actual.js @@ -0,0 +1 @@ +0b2_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-26/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-26/options.json new file mode 100644 index 0000000000..c9bd15c007 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-26/options.json @@ -0,0 +1 @@ +{ "throws": "Expected number in radix 2 (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-27/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-27/actual.js new file mode 100644 index 0000000000..08352eee51 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-27/actual.js @@ -0,0 +1 @@ +0xZ_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-27/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-27/options.json new file mode 100644 index 0000000000..7ec714f598 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-27/options.json @@ -0,0 +1 @@ +{ "throws": "Expected number in radix 16 (1:2)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-3/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-3/actual.js new file mode 100644 index 0000000000..6873b31a70 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-3/actual.js @@ -0,0 +1 @@ +1__1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-3/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-3/options.json new file mode 100644 index 0000000000..98f3821203 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-3/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:1)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-4/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-4/actual.js new file mode 100644 index 0000000000..2ba4925b82 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-4/actual.js @@ -0,0 +1 @@ +1_1_.1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-4/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-4/options.json new file mode 100644 index 0000000000..38a0b25968 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-4/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:3)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-5/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-5/actual.js new file mode 100644 index 0000000000..5b9f31e521 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-5/actual.js @@ -0,0 +1 @@ +1_1._1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-5/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-5/options.json new file mode 100644 index 0000000000..9af0551149 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-5/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:4)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-6/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-6/actual.js new file mode 100644 index 0000000000..6527da3a34 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-6/actual.js @@ -0,0 +1 @@ +1_1.1_e1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-6/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-6/options.json new file mode 100644 index 0000000000..c338d94e7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-6/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-7/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-7/actual.js new file mode 100644 index 0000000000..a42c9013ab --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-7/actual.js @@ -0,0 +1 @@ +1_1.1_E1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-7/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-7/options.json new file mode 100644 index 0000000000..c338d94e7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-7/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:5)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-8/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-8/actual.js new file mode 100644 index 0000000000..015dfb2cca --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-8/actual.js @@ -0,0 +1 @@ +1_1.1e_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-8/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-8/options.json new file mode 100644 index 0000000000..02c2fdc2bb --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-8/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:6)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-9/actual.js b/test/fixtures/experimental/numeric-literal-separator/invalid-9/actual.js new file mode 100644 index 0000000000..69b401af73 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-9/actual.js @@ -0,0 +1 @@ +1_1.1E_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/invalid-9/options.json b/test/fixtures/experimental/numeric-literal-separator/invalid-9/options.json new file mode 100644 index 0000000000..02c2fdc2bb --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/invalid-9/options.json @@ -0,0 +1 @@ +{ "throws": "Invalid NumericLiteralSeparator (1:6)" } \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/options.json b/test/fixtures/experimental/numeric-literal-separator/options.json new file mode 100644 index 0000000000..7832463eea --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["numericSeparator"] +} diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-0/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-0/actual.js new file mode 100644 index 0000000000..1444c527e6 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-0/actual.js @@ -0,0 +1 @@ +1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-0/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-0/expected.json new file mode 100644 index 0000000000..4165833ec2 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-0/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 3, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 3 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 3, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 3 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 3, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 3 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 3, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 3 + } + }, + "extra": { + "rawValue": 11, + "raw": "1_1" + }, + "value": 11 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-1/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-1/actual.js new file mode 100644 index 0000000000..5dc4398746 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-1/actual.js @@ -0,0 +1 @@ +1_1.1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-1/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-1/expected.json new file mode 100644 index 0000000000..8260e3a36f --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-1/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "extra": { + "rawValue": 11.11, + "raw": "1_1.1_1" + }, + "value": 11.11 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-10/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-10/actual.js new file mode 100644 index 0000000000..70c7d458e9 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-10/actual.js @@ -0,0 +1 @@ +0o1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-10/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-10/expected.json new file mode 100644 index 0000000000..79c01565f8 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-10/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "extra": { + "rawValue": 9, + "raw": "0o1_1" + }, + "value": 9 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-11/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-11/actual.js new file mode 100644 index 0000000000..a8ad08acec --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-11/actual.js @@ -0,0 +1 @@ +0o0_11 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-11/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-11/expected.json new file mode 100644 index 0000000000..010ed236b8 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-11/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "extra": { + "rawValue": 9, + "raw": "0o0_11" + }, + "value": 9 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-2/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-2/actual.js new file mode 100644 index 0000000000..a601c9a6c4 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-2/actual.js @@ -0,0 +1 @@ +1.1_0_1e1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-2/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-2/expected.json new file mode 100644 index 0000000000..0fe859c994 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-2/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "extra": { + "rawValue": 11.01, + "raw": "1.1_0_1e1" + }, + "value": 11.01 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-3/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-3/actual.js new file mode 100644 index 0000000000..77285bba7c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-3/actual.js @@ -0,0 +1 @@ +1.1_0_1E1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-3/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-3/expected.json new file mode 100644 index 0000000000..e2e79f52c3 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-3/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "extra": { + "rawValue": 11.01, + "raw": "1.1_0_1E1" + }, + "value": 11.01 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-4/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-4/actual.js new file mode 100644 index 0000000000..cf6d034fda --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-4/actual.js @@ -0,0 +1 @@ +.1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-4/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-4/expected.json new file mode 100644 index 0000000000..b799415f3c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-4/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 4, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 4 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 4, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 4 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 4, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 4 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 4, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 4 + } + }, + "extra": { + "rawValue": 0.11, + "raw": ".1_1" + }, + "value": 0.11 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-5/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-5/actual.js new file mode 100644 index 0000000000..bd1002cd74 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-5/actual.js @@ -0,0 +1 @@ +0x1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-5/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-5/expected.json new file mode 100644 index 0000000000..c198cab891 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-5/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "extra": { + "rawValue": 17, + "raw": "0x1_1" + }, + "value": 17 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-6/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-6/actual.js new file mode 100644 index 0000000000..ed1eb193f7 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-6/actual.js @@ -0,0 +1 @@ +0xa_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-6/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-6/expected.json new file mode 100644 index 0000000000..3d60200076 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-6/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "extra": { + "rawValue": 161, + "raw": "0xa_1" + }, + "value": 161 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-7/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-7/actual.js new file mode 100644 index 0000000000..2c83531afc --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-7/actual.js @@ -0,0 +1 @@ +0xA_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-7/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-7/expected.json new file mode 100644 index 0000000000..53bfa89514 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-7/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 5 + } + }, + "extra": { + "rawValue": 161, + "raw": "0xA_1" + }, + "value": 161 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-8/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-8/actual.js new file mode 100644 index 0000000000..522c24653c --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-8/actual.js @@ -0,0 +1 @@ +0b01_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-8/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-8/expected.json new file mode 100644 index 0000000000..9ec67ee581 --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-8/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + }, + "extra": { + "rawValue": 3, + "raw": "0b01_1" + }, + "value": 3 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-9/actual.js b/test/fixtures/experimental/numeric-literal-separator/valid-9/actual.js new file mode 100644 index 0000000000..9eed82d99e --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-9/actual.js @@ -0,0 +1 @@ +0b0_1_1 \ No newline at end of file diff --git a/test/fixtures/experimental/numeric-literal-separator/valid-9/expected.json b/test/fixtures/experimental/numeric-literal-separator/valid-9/expected.json new file mode 100644 index 0000000000..8619859fec --- /dev/null +++ b/test/fixtures/experimental/numeric-literal-separator/valid-9/expected.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "sourceType": "script", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "expression": { + "type": "NumericLiteral", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "extra": { + "rawValue": 3, + "raw": "0b0_1_1" + }, + "value": 3 + } + } + ], + "directives": [] + } +} \ No newline at end of file