From 9bc9116656247eb3426cf1cb91d88b70c6bae594 Mon Sep 17 00:00:00 2001
From: Kevin Gibbons <kevin@shapesecurity.com>
Date: Mon, 5 Nov 2018 15:23:03 -0800
Subject: [PATCH] split unicode-malformed.js

---
 .../RegExp/named-groups/unicode-malformed.js  | 29 -------------------
 .../invalid-dangling-groupname-2-u.js         | 20 +++++++++++++
 .../invalid-dangling-groupname-3-u.js         | 20 +++++++++++++
 .../invalid-dangling-groupname-4-u.js         | 20 +++++++++++++
 .../invalid-dangling-groupname-u.js           | 20 +++++++++++++
 ...lid-dangling-groupname-without-group-u.js} |  2 +-
 .../invalid-duplicate-groupspecifier-2-u.js   | 18 ++++++++++++
 .../invalid-duplicate-groupspecifier-u.js     | 18 ++++++++++++
 .../invalid-empty-groupspecifier-u.js         | 15 ++++++++++
 .../invalid-identity-escape-in-capture-u.js   | 15 ++++++++++
 .../invalid-incomplete-groupname-2-u.js       | 15 ++++++++++
 .../invalid-incomplete-groupname-3-u.js       | 15 ++++++++++
 .../invalid-incomplete-groupname-u.js         | 15 ++++++++++
 ...-incomplete-groupname-without-group-2-u.js | 15 ++++++++++
 ...-incomplete-groupname-without-group-3-u.js | 15 ++++++++++
 ...id-incomplete-groupname-without-group-u.js | 15 ++++++++++
 .../invalid-numeric-groupspecifier-u.js       | 15 ++++++++++
 ...id-punctuator-starting-groupspecifier-u.js | 15 ++++++++++
 ...lid-punctuator-starting-groupspecifier.js} |  0
 ...alid-punctuator-within-groupspecifier-u.js | 15 ++++++++++
 ...valid-punctuator-within-groupspecifier.js} |  0
 .../invalid-unterminated-groupspecifier-u.js  | 15 ++++++++++
 ...=> invalid-unterminated-groupspecifier.js} |  0
 23 files changed, 297 insertions(+), 30 deletions(-)
 delete mode 100644 test/built-ins/RegExp/named-groups/unicode-malformed.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-dangling-groupname-2-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-dangling-groupname-3-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-dangling-groupname-4-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-dangling-groupname-u.js
 rename test/language/literals/regexp/named-groups/{invalid-dangling-groupname-5.js => invalid-dangling-groupname-without-group-u.js} (97%)
 create mode 100644 test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-empty-groupspecifier-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u.js
 create mode 100644 test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u.js
 rename test/language/literals/regexp/named-groups/{invalid-punctuator-in-groupspecifier.js => invalid-punctuator-starting-groupspecifier.js} (100%)
 create mode 100644 test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u.js
 rename test/language/literals/regexp/named-groups/{invalid-punctuator-in-groupspecifier-2.js => invalid-punctuator-within-groupspecifier.js} (100%)
 create mode 100644 test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u.js
 rename test/language/literals/regexp/named-groups/{invalid-incomplete-groupspecifier.js => invalid-unterminated-groupspecifier.js} (100%)

diff --git a/test/built-ins/RegExp/named-groups/unicode-malformed.js b/test/built-ins/RegExp/named-groups/unicode-malformed.js
deleted file mode 100644
index 5c9c131a48..0000000000
--- a/test/built-ins/RegExp/named-groups/unicode-malformed.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-description: Various syntax errors for Unicode RegExps containing named groups
-esid: prod-GroupSpecifier
-features: [regexp-named-groups]
----*/
-
-assert.throws(SyntaxError, () => eval("/(?<>a)/u"), "Empty name");
-assert.throws(SyntaxError, () => eval("/(?<aa)/u"), "Unterminated name");
-assert.throws(SyntaxError, () => eval("/(?<42a>a)/u"), "Name starting with digits");
-assert.throws(SyntaxError, () => eval("/(?<:a>a)/u"), "Name starting with invalid char");
-assert.throws(SyntaxError, () => eval("/(?<a:>a)/u"), "Name containing with invalid char");
-assert.throws(SyntaxError, () => eval("/(?<a>a)(?<a>a)/u"), "Duplicate name");
-assert.throws(SyntaxError, () => eval("/(?<a>a)(?<b>b)(?<a>a)/u"), "Duplicate name");
-assert.throws(SyntaxError, () => eval("/\\k<a>/u"), "Invalid reference");
-assert.throws(SyntaxError, () => eval("/\\k<a/u"), "Unterminated reference");
-assert.throws(SyntaxError, () => eval("/\\k<>/u"), "Empty reference");
-assert.throws(SyntaxError, () => eval("/\\k/u"), "Lone \k");
-assert.throws(SyntaxError, () => eval("/(?<a>.)\\k/u"), "Lone \k");
-assert.throws(SyntaxError, () => eval("/(?<a>.)\\k<a/u"), "Unterminated reference");
-assert.throws(SyntaxError, () => eval("/(?<a>.)\\k<>/u"), "Empty reference");
-assert.throws(SyntaxError, () => eval("/(?<a>.)\\k<b>/u"), "Invalid reference");
-assert.throws(SyntaxError, () => eval("/(?<a>a)\\k<ab>/u"), "Invalid reference");
-assert.throws(SyntaxError, () => eval("/(?<ab>a)\\k<a>/u"), "Invalid reference");
-assert.throws(SyntaxError, () => eval("/\\k<a>(?<ab>a)/u"), "Invalid reference");
-assert.throws(SyntaxError, () => eval("/(?<a>\\a)/u"), "Identity escape in capture");
-
diff --git a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-2-u.js b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-2-u.js
new file mode 100644
index 0000000000..264709e7d9
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-2-u.js
@@ -0,0 +1,20 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Group reference must have corresponding group.
+info: |
+  It is a Syntax Error if the enclosing Pattern does not contain a
+  GroupSpecifier with an enclosed RegExpIdentifierName whose StringValue
+  equals the StringValue of the RegExpIdentifierName of this production's
+  GroupName.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>a)\k<ab>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-3-u.js b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-3-u.js
new file mode 100644
index 0000000000..b0690b5167
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-3-u.js
@@ -0,0 +1,20 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Group reference must have corresponding group.
+info: |
+  It is a Syntax Error if the enclosing Pattern does not contain a
+  GroupSpecifier with an enclosed RegExpIdentifierName whose StringValue
+  equals the StringValue of the RegExpIdentifierName of this production's
+  GroupName.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<ab>a)\k<a>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-4-u.js b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-4-u.js
new file mode 100644
index 0000000000..fecebf654e
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-4-u.js
@@ -0,0 +1,20 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Group reference must have corresponding group.
+info: |
+  It is a Syntax Error if the enclosing Pattern does not contain a
+  GroupSpecifier with an enclosed RegExpIdentifierName whose StringValue
+  equals the StringValue of the RegExpIdentifierName of this production's
+  GroupName.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\k<a>(?<ab>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-u.js b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-u.js
new file mode 100644
index 0000000000..dd14be10ab
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-u.js
@@ -0,0 +1,20 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Group reference must have corresponding group.
+info: |
+  It is a Syntax Error if the enclosing Pattern does not contain a
+  GroupSpecifier with an enclosed RegExpIdentifierName whose StringValue
+  equals the StringValue of the RegExpIdentifierName of this production's
+  GroupName.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>.)\k<b>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-5.js b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u.js
similarity index 97%
rename from test/language/literals/regexp/named-groups/invalid-dangling-groupname-5.js
rename to test/language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u.js
index 582bf29d8a..004618ede4 100644
--- a/test/language/literals/regexp/named-groups/invalid-dangling-groupname-5.js
+++ b/test/language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u.js
@@ -17,4 +17,4 @@ features: [regexp-named-groups]
 
 throw "Test262: This statement should not be evaluated.";
 
-/\k<a>(?<b>x)/;
+/\k<a>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u.js b/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u.js
new file mode 100644
index 0000000000..70707a499f
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u.js
@@ -0,0 +1,18 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifiers must be unique.
+info: |
+  It is a Syntax Error if Pattern contains multiple GroupSpecifiers
+  whose enclosed RegExpIdentifierNames have the same StringValue.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>a)(?<b>b)(?<a>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u.js
new file mode 100644
index 0000000000..bac9221490
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u.js
@@ -0,0 +1,18 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifiers must be unique.
+info: |
+  It is a Syntax Error if Pattern contains multiple GroupSpecifiers
+  whose enclosed RegExpIdentifierNames have the same StringValue.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>a)(?<a>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-empty-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-empty-groupspecifier-u.js
new file mode 100644
index 0000000000..44a86c1c5a
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-empty-groupspecifier-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifier must be identifier-like.
+esid: prod-GroupSpecifier
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u.js b/test/language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u.js
new file mode 100644
index 0000000000..0f46b0e1dc
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>\a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u.js
new file mode 100644
index 0000000000..ed0d2ff019
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>.)\k<a/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u.js
new file mode 100644
index 0000000000..883c3b0d8d
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>.)\k<>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-u.js
new file mode 100644
index 0000000000..636b69a578
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a>.)\k/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u.js
new file mode 100644
index 0000000000..d953a42877
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\k<>/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u.js
new file mode 100644
index 0000000000..f8c41abbfe
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\k/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u.js b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u.js
new file mode 100644
index 0000000000..b7e22617e6
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupName is `< RegExpIdentifierName >`.
+esid: prod-GroupName
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\k<a/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u.js
new file mode 100644
index 0000000000..c5ede73e6f
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifier must be identifier-like.
+esid: prod-GroupSpecifier
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<42a>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u.js
new file mode 100644
index 0000000000..b55f2b5453
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifier must be identifier-like.
+esid: prod-GroupSpecifier
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<:a>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-punctuator-in-groupspecifier.js b/test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier.js
similarity index 100%
rename from test/language/literals/regexp/named-groups/invalid-punctuator-in-groupspecifier.js
rename to test/language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier.js
diff --git a/test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u.js
new file mode 100644
index 0000000000..1419cddb5f
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifier must be identifier-like.
+esid: prod-GroupSpecifier
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<a:>a)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-punctuator-in-groupspecifier-2.js b/test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier.js
similarity index 100%
rename from test/language/literals/regexp/named-groups/invalid-punctuator-in-groupspecifier-2.js
rename to test/language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier.js
diff --git a/test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u.js b/test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u.js
new file mode 100644
index 0000000000..d84c30e4dc
--- /dev/null
+++ b/test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u.js
@@ -0,0 +1,15 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: GroupSpecifier must be identifier-like.
+esid: prod-GroupSpecifier
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-named-groups]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/(?<aa)/u;
diff --git a/test/language/literals/regexp/named-groups/invalid-incomplete-groupspecifier.js b/test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier.js
similarity index 100%
rename from test/language/literals/regexp/named-groups/invalid-incomplete-groupspecifier.js
rename to test/language/literals/regexp/named-groups/invalid-unterminated-groupspecifier.js
-- 
GitLab