From 1e1d503c1bf42d88fc244ea411abc062d6a38fef Mon Sep 17 00:00:00 2001
From: Valerie <spectranaut@gmail.com>
Date: Wed, 28 Feb 2018 13:58:22 -0500
Subject: [PATCH] numeric literal seperators: test change in CodePoint
 production (#1464)

---
 .../unicode-escape-nls-err.js                 | 55 ++++++++++++++
 .../identifiers/unicode-escape-nls-err.js     | 48 ++++++++++++
 .../literals/regexp/unicode-escape-nls-err.js | 73 +++++++++++++++++++
 .../string/unicode-escape-nls-err-double.js   | 49 +++++++++++++
 .../string/unicode-escape-nls-err-single.js   | 49 +++++++++++++
 5 files changed, 274 insertions(+)
 create mode 100644 test/language/expressions/template-literal/unicode-escape-nls-err.js
 create mode 100644 test/language/identifiers/unicode-escape-nls-err.js
 create mode 100644 test/language/literals/regexp/unicode-escape-nls-err.js
 create mode 100644 test/language/literals/string/unicode-escape-nls-err-double.js
 create mode 100644 test/language/literals/string/unicode-escape-nls-err-single.js

diff --git a/test/language/expressions/template-literal/unicode-escape-nls-err.js b/test/language/expressions/template-literal/unicode-escape-nls-err.js
new file mode 100644
index 0000000000..64085f275d
--- /dev/null
+++ b/test/language/expressions/template-literal/unicode-escape-nls-err.js
@@ -0,0 +1,55 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-Template
+description: NumericLiteralSeperator disallowed in unicode CodePoint sequence
+info: |
+ Template ::
+   NoSubstitutionTemplate
+   TemplateHead
+
+ NoSubstitutionTemplate ::
+   `TemplateCharactersopt`
+
+ TemplateCharacters ::
+   TemplateCharacterTemplateCharactersopt
+
+ TemplateCharacter ::
+   $[lookahead ≠ {]
+   \EscapeSequence
+   \NotEscapeSequence
+   LineContinuation
+   LineTerminatorSequence
+   SourceCharacterbut not one of ` or \ or $ or LineTerminator
+
+ EscapeSequence ::
+   CharacterEscapeSequence
+   0 [lookahead ∉ DecimalDigit]
+   HexEscapeSequence
+   UnicodeEscapeSequence
+
+ UnicodeEscapeSequence ::
+   uHex4Digits
+   u{CodePoint}
+
+ CodePoint ::
+   HexDigit but only if MV of HexDigits ≤ 0x10FFFF
+   CodePointDigits but only if MV of HexDigits ≤ 0x10FFFF
+
+ CodePointDigits ::
+   HexDigit
+   CodePointDigitsHexDigit
+
+  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: [numeric-separator-literal]
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+`\u{1F_639}`;
diff --git a/test/language/identifiers/unicode-escape-nls-err.js b/test/language/identifiers/unicode-escape-nls-err.js
new file mode 100644
index 0000000000..1fe553699f
--- /dev/null
+++ b/test/language/identifiers/unicode-escape-nls-err.js
@@ -0,0 +1,48 @@
+// Copyright (C) 2014 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: prod-Identifier
+description: NumericLiteralSeperator disallowed in unicode CodePoint escape sequence
+info: |
+ Identifier:
+   IdentifierName but not ReservedWord
+
+ IdentifierName ::
+   IdentifierStart
+   IdentifierNameIdentifierPart
+
+ IdentifierStart ::
+   UnicodeIDStart
+   $
+   _
+   \UnicodeEscapeSequence
+
+ IdentifierPart ::
+   UnicodeIDContinue
+   $
+   \UnicodeEscapeSequence
+
+ UnicodeEscapeSequence ::
+   uHex4Digits
+   u{CodePoint}
+
+ CodePoint ::
+   HexDigit but only if MV of HexDigits ≤ 0x10FFFF
+   CodePointDigits but only if MV of HexDigits ≤ 0x10FFFF
+
+ CodePointDigits ::
+   HexDigit
+   CodePointDigitsHexDigit
+
+  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: [numeric-separator-literal]
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var \u{00_76} = 1;
diff --git a/test/language/literals/regexp/unicode-escape-nls-err.js b/test/language/literals/regexp/unicode-escape-nls-err.js
new file mode 100644
index 0000000000..24b4ad5d67
--- /dev/null
+++ b/test/language/literals/regexp/unicode-escape-nls-err.js
@@ -0,0 +1,73 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-Pattern
+description: NumericLiteralSeperator disallowed in unicode CodePoint sequence
+info: |
+ Pattern[U, N]::
+   Disjunction[?U, ?N]
+
+ Disjunction[U, N]::
+   Alternative[?U, ?N]
+   Alternative[?U, ?N]|Disjunction[?U, ?N]
+
+ Alternative[U, N]::
+   [empty]
+   Alternative[?U, ?N]Term[?U, ?N]
+
+ Term[U, N]::
+   Assertion[?U, ?N]
+   Atom[?U, ?N]
+   Atom[?U, ?N]Quantifier
+
+ Atom[U, N]::
+   PatternCharacter
+   .
+   \AtomEscape[?U, ?N]
+   CharacterClass[?U]
+   (GroupSpecifier[?U]Disjunction[?U, ?N])
+   (?:Disjunction[?U, ?N])
+
+ AtomEscape[U, N]::
+   DecimalEscape
+   CharacterClassEscape[?U]
+   CharacterEscape[?U]
+   [+N]kGroupName[?U]
+
+ CharacterEscape[U]::
+   ControlEscape
+   cControlLetter
+   0[lookahead ∉ DecimalDigit]
+   HexEscapeSequence
+   RegExpUnicodeEscapeSequence[?U]
+   IdentityEscape[?U]
+
+ RegExpUnicodeEscapeSequence[U]::
+   [+U]uLeadSurrogate\uTrailSurrogate
+   [+U]uLeadSurrogate
+   [+U]uTrailSurrogate
+   [+U]uNonSurrogate
+   [~U]uHex4Digits
+   [+U]u{CodePoint}
+
+ CodePoint ::
+   HexDigit but only if MV of HexDigits ≤ 0x10FFFF
+   CodePointDigits but only if MV of HexDigits ≤ 0x10FFFF
+
+ CodePointDigits ::
+   HexDigit
+   CodePointDigitsHexDigit
+
+  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: [numeric-separator-literal]
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\u{1F_639}/u;
diff --git a/test/language/literals/string/unicode-escape-nls-err-double.js b/test/language/literals/string/unicode-escape-nls-err-double.js
new file mode 100644
index 0000000000..d33d4f95f2
--- /dev/null
+++ b/test/language/literals/string/unicode-escape-nls-err-double.js
@@ -0,0 +1,49 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-StringLiteral
+description: NumericLiteralSeperator disallowed in unicode CodePoint sequence (DoubleStringCharacters)
+info: |
+ StringLiteral::
+   "DoubleStringCharacters opt"
+   'SingleStringCharacters opt'
+
+ DoubleStringCharacters::
+   DoubleStringCharacter DoubleStringCharacters opt
+
+ DoubleStringCharacter::
+   SourceCharacter but not one of " or \ or LineTerminator
+   \ EscapeSequence
+   LineContinuation
+
+ EscapeSequence::
+   CharacterEscapeSequence
+   0 [lookahead ∉ DecimalDigit]
+   HexEscapeSequence
+   UnicodeEscapeSequence
+
+ UnicodeEscapeSequence ::
+   uHex4Digits
+   u{CodePoint}
+
+ CodePoint ::
+   HexDigit but only if MV of HexDigits ≤ 0x10FFFF
+   CodePointDigits but only if MV of HexDigits ≤ 0x10FFFF
+
+ CodePointDigits ::
+   HexDigit
+   CodePointDigitsHexDigit
+
+  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: [numeric-separator-literal]
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+"\u{1F_639}"
diff --git a/test/language/literals/string/unicode-escape-nls-err-single.js b/test/language/literals/string/unicode-escape-nls-err-single.js
new file mode 100644
index 0000000000..a2d7c559b0
--- /dev/null
+++ b/test/language/literals/string/unicode-escape-nls-err-single.js
@@ -0,0 +1,49 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-StringLiteral
+description: NumericLiteralSeperator disallowed in unicode CodePoint sequence (DoubleStringCharacters)
+info: |
+ StringLiteral::
+   "DoubleStringCharacters opt"
+   'SingleStringCharacters opt'
+
+ SingleStringCharacters::
+   SingleStringCharacterSingleStringCharactersopt
+
+ SingleStringCharacter::
+   SourceCharacterbut not one of ' or \ or LineTerminator
+   \ EscapeSequence
+   LineContinuation
+
+ EscapeSequence::
+   CharacterEscapeSequence
+   0 [lookahead ∉ DecimalDigit]
+   HexEscapeSequence
+   UnicodeEscapeSequence
+
+ UnicodeEscapeSequence ::
+   uHex4Digits
+   u{CodePoint}
+
+ CodePoint ::
+   HexDigit but only if MV of HexDigits ≤ 0x10FFFF
+   CodePointDigits but only if MV of HexDigits ≤ 0x10FFFF
+
+ CodePointDigits ::
+   HexDigit
+   CodePointDigitsHexDigit
+
+  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: [numeric-separator-literal]
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+'\u{1F_639}';
-- 
GitLab