diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd-err.js new file mode 100644 index 0000000000..0a076f5d32 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the appear adjacent to `0b` | `0B` in a + BinaryIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0b_1n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js new file mode 100644 index 0000000000..f284d276ad --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0b0_1n, 0b01n); +assert.sameValue(0B0_1n, 0B01n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js new file mode 100644 index 0000000000..cad1feec0f --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0b0_10n, 0b010n); +assert.sameValue(0B0_10n, 0B010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js new file mode 100644 index 0000000000..4949452f65 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0b01_0n, 0b010n); +assert.sameValue(0B01_0n, 0B010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bds.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bds.js new file mode 100644 index 0000000000..8f8bc77f23 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bds-nsl-bds.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0b01_00n, 0b0100n); +assert.sameValue(0B01_00n, 0B0100n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-dunder-err.js new file mode 100644 index 0000000000..352019f6e5 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-dunder-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in a BinaryIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0b0__0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-err.js new file mode 100644 index 0000000000..8e6113be03 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-err.js @@ -0,0 +1,43 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the last digit character of a + BinaryIntegerLiteral (before n) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + BinaryIntegerLiteral :: + 0b BinaryDigits + 0B BinaryDigits + + BinaryDigits :: + BinaryDigit + BinaryDigits BinaryDigit + BinaryDigits NumericLiteralSeparator BinaryDigit + + BinaryDigit :: one of + 0 1 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0b0_n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dd-one-of.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dd-one-of.js new file mode 100644 index 0000000000..46fda9a052 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dd-one-of.js @@ -0,0 +1,46 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: NonZeroDigit NumericLiteralSeparator DecimalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + + + DecimalDigits :: + DecimalDigit + ... + + DecimalDigit :: one of + 0 1 2 3 4 5 6 7 8 9 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(1_0n, 10n); +assert.sameValue(1_1n, 11n); +assert.sameValue(1_2n, 12n); +assert.sameValue(1_3n, 13n); +assert.sameValue(1_4n, 14n); +assert.sameValue(1_5n, 15n); +assert.sameValue(1_6n, 16n); +assert.sameValue(1_7n, 17n); +assert.sameValue(1_8n, 18n); +assert.sameValue(1_9n, 19n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dds-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dds-dunder-err.js new file mode 100644 index 0000000000..4faf06f03a --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dds-dunder-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in a DecimalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +1__0123456789n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-err.js new file mode 100644 index 0000000000..f3a0b2af42 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-err.js @@ -0,0 +1,38 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the last digit character +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalLiteral :: + DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt + + DecimalDigits :: + ... + DecimalDigits NumericLiteralSeparator DecimalDigit + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +1_n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dd.js new file mode 100644 index 0000000000..2ecb7a4a4f --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dd.js @@ -0,0 +1,38 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: DecimalDigits NumericLiteralSeparator DecimalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalDigits :: + ... + DecimalDigits NumericLiteralSeparator DecimalDigit + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(123456789_0n, 1234567890n); +assert.sameValue(123456789_1n, 1234567891n); +assert.sameValue(123456789_2n, 1234567892n); +assert.sameValue(123456789_3n, 1234567893n); +assert.sameValue(123456789_4n, 1234567894n); +assert.sameValue(123456789_5n, 1234567895n); +assert.sameValue(123456789_6n, 1234567896n); +assert.sameValue(123456789_7n, 1234567897n); +assert.sameValue(123456789_8n, 1234567898n); +assert.sameValue(123456789_9n, 1234567899n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dds-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dds-dunder-err.js new file mode 100644 index 0000000000..7436225b64 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dds-dunder-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in DecimalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +10__0123456789n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-err.js new file mode 100644 index 0000000000..be6b56e9c3 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-err.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the last digit character of a + DecimalLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalLiteral :: + DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt + + DecimalDigits :: + ... + DecimalDigits NumericLiteralSeparator DecimalDigit + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +10_n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd-err.js new file mode 100644 index 0000000000..4caf506d7a --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the appear adjacent to `0x` | `0X` in a + HexIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0x_1n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd.js new file mode 100644 index 0000000000..d12a37d2fe --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0x0_1n, 0x01n); +assert.sameValue(0X0_1n, 0X01n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hds.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hds.js new file mode 100644 index 0000000000..bfd203a8a1 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hds.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0x0_10n, 0x010n); +assert.sameValue(0X0_10n, 0X010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hd.js new file mode 100644 index 0000000000..a4fcc57a4d --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hd.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0x01_0n, 0x010n); +assert.sameValue(0X01_0n, 0X010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hds.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hds.js new file mode 100644 index 0000000000..43846d8801 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hds-nsl-hds.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0x01_00n, 0x0100n); +assert.sameValue(0X01_00n, 0X0100n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-dunder-err.js new file mode 100644 index 0000000000..72b1c7ee9d --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-dunder-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in a HexIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0x0__0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-err.js new file mode 100644 index 0000000000..f2c87cb837 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the last digit character of a + HexIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0x0_n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-od-nsl-od-one-of.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-od-nsl-od-one-of.js new file mode 100644 index 0000000000..2e4b27ca33 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-hil-od-nsl-od-one-of.js @@ -0,0 +1,59 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + HexIntegerLiteral :: + 0x HexDigits + 0X HexDigits + + HexDigits :: + HexDigit + HexDigits HexDigit + HexDigits NumericLiteralSeparator HexDigit + + HexDigit::one of + 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0x0_0n, 0x00n); +assert.sameValue(0x1_1n, 0x11n); +assert.sameValue(0x2_2n, 0x22n); +assert.sameValue(0x3_3n, 0x33n); +assert.sameValue(0x4_4n, 0x44n); +assert.sameValue(0x5_5n, 0x55n); +assert.sameValue(0x6_6n, 0x66n); +assert.sameValue(0x7_7n, 0x77n); +assert.sameValue(0x8_8n, 0x88n); +assert.sameValue(0x9_9n, 0x99n); +assert.sameValue(0xa_a, 0xaa); +assert.sameValue(0xb_b, 0xbb); +assert.sameValue(0xc_c, 0xcc); +assert.sameValue(0xd_d, 0xdd); +assert.sameValue(0xe_e, 0xee); +assert.sameValue(0xf_f, 0xff); +assert.sameValue(0xA_A, 0xAA); +assert.sameValue(0xB_B, 0xBB); +assert.sameValue(0xC_C, 0xCC); +assert.sameValue(0xD_D, 0xDD); +assert.sameValue(0xE_E, 0xEE); +assert.sameValue(0xF_F, 0xFF); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-00-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-00-err.js new file mode 100644 index 0000000000..33c7116ca0 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-00-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (00_0) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +00_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-01-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-01-err.js new file mode 100644 index 0000000000..58d16fe1d6 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-01-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (01_0) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +01_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-07-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-07-err.js new file mode 100644 index 0000000000..85e65fd90c --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-07-err.js @@ -0,0 +1,54 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (07_0) + ) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +07_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_0-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_0-err.js new file mode 100644 index 0000000000..899d939afb --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_0-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (0_0) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_1-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_1-err.js new file mode 100644 index 0000000000..4e03c7cea0 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_1-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (0_1) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_1n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_7-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_7-err.js new file mode 100644 index 0000000000..8abc8c282c --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-lol-0_7-err.js @@ -0,0 +1,53 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a LegacyOctalLikeDecimalIntegerLiteral (0_7) + ) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 + + OctalDigit::one of + 0 1 2 3 4 5 6 7 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_7n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-08-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-08-err.js new file mode 100644 index 0000000000..73dc740799 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-08-err.js @@ -0,0 +1,49 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a NonOctalDecimalIntegerLiteral (08) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +08_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-09-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-09-err.js new file mode 100644 index 0000000000..3b15ee9f07 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-09-err.js @@ -0,0 +1,49 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a NonOctalDecimalIntegerLiteral (09) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +09_0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_8-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_8-err.js new file mode 100644 index 0000000000..d338c24061 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_8-err.js @@ -0,0 +1,49 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a NonOctalDecimalIntegerLiteral (0_8) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_8n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_9-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_9-err.js new file mode 100644 index 0000000000..6f35f3a3f8 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nonoctal-0_9-err.js @@ -0,0 +1,49 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator must not be in a NonOctalDecimalIntegerLiteral (0_9) +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + 0 + NonZeroDigit DecimalDigitsopt + NonZeroDigit + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + NonOctalDecimalIntegerLiteral + + NonOctalDecimalIntegerLiteral :: + 0 NonOctalDigit + LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit + NonOctalDecimalIntegerLiteral DecimalDigit + + LegacyOctalLikeDecimalIntegerLiteral :: + 0 OctalDigit + LegacyOctalLikeDecimalIntegerLiteral OctalDigit + + NonOctalDigit::one of + 8 9 +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_9n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd-one-of.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd-one-of.js new file mode 100644 index 0000000000..a60c20281e --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd-one-of.js @@ -0,0 +1,50 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: NonZeroDigit NumericLiteralSeparator DecimalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + + NonZeroDigit :: one of + 1 2 3 4 5 6 7 8 9 + + DecimalDigits :: + DecimalDigit + ... + + DecimalDigit :: one of + 0 1 2 3 4 5 6 7 8 9 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(1_0n, 10n); +assert.sameValue(1_1n, 11n); +assert.sameValue(2_2n, 22n); +assert.sameValue(3_3n, 33n); +assert.sameValue(4_4n, 44n); +assert.sameValue(5_5n, 55n); +assert.sameValue(6_6n, 66n); +assert.sameValue(7_7n, 77n); +assert.sameValue(8_8n, 88n); +assert.sameValue(9_9n, 99n); + + diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd.js new file mode 100644 index 0000000000..1516194777 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dd.js @@ -0,0 +1,37 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: NonZeroDigit NumericLiteralSeparator DecimalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + + NonZeroDigit :: one of + 1 2 3 4 5 6 7 8 9 + + DecimalDigits :: + ... + DecimalDigits DecimalDigit + ... + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(1_1n, 11n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-dunder-err.js new file mode 100644 index 0000000000..be881a0112 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-dunder-err.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in DecimalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + + NonZeroDigit :: one of + 1 2 3 4 5 6 7 8 9 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0__0123456789n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js new file mode 100644 index 0000000000..c04c929a46 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: NonZeroDigit NumericLiteralSeparator DecimalDigits +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator DecimalDigits + + NonZeroDigit :: one of + 1 2 3 4 5 6 7 8 9 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0_0123456789n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds.js new file mode 100644 index 0000000000..a732cefc38 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds.js @@ -0,0 +1,37 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: NonZeroDigit NumericLiteralSeparator DecimalDigits +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + DecimalIntegerLiteral :: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + + NonZeroDigit :: one of + 1 2 3 4 5 6 7 8 9 + + DecimalDigits :: + ... + DecimalDigits DecimalDigit + ... + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(1_0123456789n, 10123456789n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-dunder-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-dunder-err.js new file mode 100644 index 0000000000..3718509af7 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-dunder-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not appear adjacent to another + NumericLiteralSeparator in a OctalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0o0__0n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-err.js new file mode 100644 index 0000000000..58c7cefa84 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the last digit character of an + OctalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0o0_n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-err.js new file mode 100644 index 0000000000..0a9e2bcc6b --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NumericLiteralSeparator may not be the appear adjacent to `0o` | `0O` in a + OctalIntegerLiteral +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +0o_1n; diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-one-of.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-one-of.js new file mode 100644 index 0000000000..f7972983a0 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-one-of.js @@ -0,0 +1,45 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0o0_0n, 0o00n); +assert.sameValue(0o1_1n, 0o11n); +assert.sameValue(0o2_2n, 0o22n); +assert.sameValue(0o3_3n, 0o33n); +assert.sameValue(0o4_4n, 0o44n); +assert.sameValue(0o5_5n, 0o55n); +assert.sameValue(0o6_6n, 0o66n); +assert.sameValue(0o7_7n, 0o77n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od.js new file mode 100644 index 0000000000..5e12393355 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0o0_1n, 0o01n); +assert.sameValue(0O0_1n, 0O01n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-ods.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-ods.js new file mode 100644 index 0000000000..9478005ab9 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-ods.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0o0_10n, 0o010n); +assert.sameValue(0O0_10n, 0O010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-od.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-od.js new file mode 100644 index 0000000000..70b433e66b --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-od.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0o01_0n, 0o010n); +assert.sameValue(0O01_0n, 0O010n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-ods.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-ods.js new file mode 100644 index 0000000000..2b2ce48486 --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-oil-ods-nsl-ods.js @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + OctalIntegerLiteral :: + 0o OctalDigits + 0O OctalDigits + + OctalDigits :: + OctalDigit + OctalDigits OctalDigit + OctalDigits NumericLiteralSeparator OctalDigit + + OctalDigit :: one of + 0 1 2 3 4 5 6 7 + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(0o01_00n, 0o0100n); +assert.sameValue(0O01_00n, 0O0100n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-sign-minus-dds-nsl-dd.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-sign-minus-dds-nsl-dd.js new file mode 100644 index 0000000000..3453f115ae --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-sign-minus-dds-nsl-dd.js @@ -0,0 +1,38 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: DecimalDigits NumericLiteralSeparator DecimalDigit +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator :: + _ + + SignedInteger :: + ... + - DecimalDigits + +features: [BigInt, numeric-separator-literal] +---*/ + +assert.sameValue(-123456789_0n, -1234567890n); +assert.sameValue(-123456789_1n, -1234567891n); +assert.sameValue(-123456789_2n, -1234567892n); +assert.sameValue(-123456789_3n, -1234567893n); +assert.sameValue(-123456789_4n, -1234567894n); +assert.sameValue(-123456789_5n, -1234567895n); +assert.sameValue(-123456789_6n, -1234567896n); +assert.sameValue(-123456789_7n, -1234567897n); +assert.sameValue(-123456789_8n, -1234567898n); +assert.sameValue(-123456789_9n, -1234567899n); diff --git a/test/language/literals/bigint/numeric-separators/numeric-separator-literal-unicode-err.js b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-unicode-err.js new file mode 100644 index 0000000000..3ae1602e8a --- /dev/null +++ b/test/language/literals/bigint/numeric-separators/numeric-separator-literal-unicode-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-NumericLiteralSeparator +description: > + NonZeroDigit NumericLiteralSeparator DecimalDigits sequence expressed with + unicode escape sequence +info: | + NumericLiteral :: + DecimalIntegerLiteral BigIntLiteralSuffix + NumericLiteralBase BigIntLiteralSuffix + + NumericLiteralBase :: + BinaryIntegerLiteral + OctalIntegerLiteral + HexIntegerLiteral + + BigIntLiteralSuffix :: n + + NumericLiteralSeparator:: + _ + + DecimalIntegerLiteral:: + ... + NonZeroDigit NumericLiteralSeparator_opt DecimalDigits + +negative: + phase: parse + type: SyntaxError +features: [BigInt, numeric-separator-literal] +---*/ + +$DONOTEVALUATE(); + +1\u005F0123456789n;