summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/RegExp/unicodeSets
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/test262/built-ins/RegExp/unicodeSets
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/test262/built-ins/RegExp/unicodeSets')
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js42
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js34
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js55
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js64
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js55
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js35
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js45
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js38
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js53
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js64
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js45
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js44
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js47
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js113
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js36
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js36
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js43
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js54
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js38
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js47
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js37
-rw-r--r--js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js0
112 files changed, 4883 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js
new file mode 100644
index 0000000000..ea3f9f405b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--\d]+$/v,
+ expression: "[[0-9]--\d]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js
new file mode 100644
index 0000000000..f149ff6030
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--[0-9]]+$/v,
+ expression: "[[0-9]--[0-9]]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js
new file mode 100644
index 0000000000..e476bd719e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[[0-9]--\p{ASCII_Hex_Digit}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js
new file mode 100644
index 0000000000..6eec09aa0a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--_]+$/v,
+ expression: "[[0-9]--_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..6503254ddc
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[[0-9]--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js
new file mode 100644
index 0000000000..86309091d1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[[0-9]--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js
new file mode 100644
index 0000000000..8c3faf65e4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--\d]+$/v,
+ expression: "[\d--\d]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js
new file mode 100644
index 0000000000..7d3b670133
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--[0-9]]+$/v,
+ expression: "[\d--[0-9]]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js
new file mode 100644
index 0000000000..a8d82ac86b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\d--\p{ASCII_Hex_Digit}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js
new file mode 100644
index 0000000000..268ab468fa
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--_]+$/v,
+ expression: "[\d--_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..ee17a5e2a3
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\d--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js
new file mode 100644
index 0000000000..7a6478d1d3
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\d--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js
new file mode 100644
index 0000000000..68f623d94a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&\d]+$/v,
+ expression: "[\d&&\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js
new file mode 100644
index 0000000000..37cb873c0c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&[0-9]]+$/v,
+ expression: "[\d&&[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js
new file mode 100644
index 0000000000..a6d151f0ca
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\d&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js
new file mode 100644
index 0000000000..92cf4b567d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&_]+$/v,
+ expression: "[\d&&_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..16d588133f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\d&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js
new file mode 100644
index 0000000000..acf2b3bd52
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\d&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js
new file mode 100644
index 0000000000..e824b4aa01
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d\d]+$/v,
+ expression: "[\d\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js
new file mode 100644
index 0000000000..379b113a86
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d[0-9]]+$/v,
+ expression: "[\d[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js
new file mode 100644
index 0000000000..60f24ae985
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\d\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js
new file mode 100644
index 0000000000..776778a117
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d_]+$/v,
+ expression: "[\d_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..3b67bf65fa
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\d\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js
new file mode 100644
index 0000000000..35ddb3e78b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\d\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\d\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js
new file mode 100644
index 0000000000..2fa89ae887
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&\d]+$/v,
+ expression: "[[0-9]&&\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js
new file mode 100644
index 0000000000..13a22fd440
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&[0-9]]+$/v,
+ expression: "[[0-9]&&[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js
new file mode 100644
index 0000000000..3eb91facc8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[[0-9]&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js
new file mode 100644
index 0000000000..8b8f61c038
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&_]+$/v,
+ expression: "[[0-9]&&_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..cfa39ddb49
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js
@@ -0,0 +1,42 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[[0-9]&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js
new file mode 100644
index 0000000000..f37132e414
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[[0-9]&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js
new file mode 100644
index 0000000000..e76568d7de
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]\d]+$/v,
+ expression: "[[0-9]\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js
new file mode 100644
index 0000000000..c6d71eb268
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9][0-9]]+$/v,
+ expression: "[[0-9][0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js
new file mode 100644
index 0000000000..885c091174
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[[0-9]\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js
new file mode 100644
index 0000000000..dafff31b0b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]_]+$/v,
+ expression: "[[0-9]_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..dadc3bca9f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[[0-9]\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js
new file mode 100644
index 0000000000..d518aac33d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[[0-9]\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[[0-9]\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js
new file mode 100644
index 0000000000..4b2d667ee9
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--\d]+$/v,
+ expression: "[_--\d]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js
new file mode 100644
index 0000000000..097f070131
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--[0-9]]+$/v,
+ expression: "[_--[0-9]]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js
new file mode 100644
index 0000000000..4f00212d87
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[_--\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js
new file mode 100644
index 0000000000..a530645bbb
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--_]+$/v,
+ expression: "[_--_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..469b1707e2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[_--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js
new file mode 100644
index 0000000000..0041a2a1c0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[_--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js
new file mode 100644
index 0000000000..8e261ca62c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&\d]+$/v,
+ expression: "[_&&\d]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js
new file mode 100644
index 0000000000..0c8ecc03ec
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&[0-9]]+$/v,
+ expression: "[_&&[0-9]]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js
new file mode 100644
index 0000000000..8dcc2f1f64
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[_&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js
new file mode 100644
index 0000000000..4d69f9ba84
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&_]+$/v,
+ expression: "[_&&_]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..6b495a4bbf
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[_&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js
new file mode 100644
index 0000000000..4c61acc5f3
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js
@@ -0,0 +1,34 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[_&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "_",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js
new file mode 100644
index 0000000000..a13f6a44fa
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--\d]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--\d]",
+ matchStrings: [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js
new file mode 100644
index 0000000000..6d2a0472bd
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--[0-9]]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--[0-9]]",
+ matchStrings: [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js
new file mode 100644
index 0000000000..4563fc6526
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--\p{ASCII_Hex_Digit}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js
new file mode 100644
index 0000000000..c3c40c5bab
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--_]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..e6a5a28dc9
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js
new file mode 100644
index 0000000000..fe7d8533a2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js
new file mode 100644
index 0000000000..92a5d2c309
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&\d]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js
new file mode 100644
index 0000000000..993e6079c8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&[0-9]]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js
new file mode 100644
index 0000000000..b67d3c7ba0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js
new file mode 100644
index 0000000000..e3b7555990
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&_]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..9d3201a5a2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js
new file mode 100644
index 0000000000..056c6ce6c7
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "1",
+ "3",
+ "5",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js
new file mode 100644
index 0000000000..05da070e6a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}\d]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js
new file mode 100644
index 0000000000..0f45e91454
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}[0-9]]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js
new file mode 100644
index 0000000000..dd5a0e3891
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js
new file mode 100644
index 0000000000..66e40e17f2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js
@@ -0,0 +1,55 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}_]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}_]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "_",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..9f6b120a02
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js
@@ -0,0 +1,64 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js
new file mode 100644
index 0000000000..c8da6d8c7e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{ASCII_Hex_Digit}\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{ASCII_Hex_Digit}\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js
new file mode 100644
index 0000000000..a923861572
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_\d]+$/v,
+ expression: "[_\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js
new file mode 100644
index 0000000000..8dfce19785
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_[0-9]]+$/v,
+ expression: "[_[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js
new file mode 100644
index 0000000000..22d8126f4b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js
@@ -0,0 +1,55 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[_\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "_",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js
new file mode 100644
index 0000000000..4ab5191e75
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js
@@ -0,0 +1,35 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[__]+$/v,
+ expression: "[__]",
+ matchStrings: [
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..6eebf2531b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js
@@ -0,0 +1,45 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[_\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "_"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js
new file mode 100644
index 0000000000..5415a759db
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js
@@ -0,0 +1,38 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[_\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[_\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4",
+ "9\uFE0F\u20E3",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js
new file mode 100644
index 0000000000..ea226ee91b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--\d]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--\d]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js
new file mode 100644
index 0000000000..2633d65d75
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--[0-9]]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--[0-9]]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js
new file mode 100644
index 0000000000..b9059e6a87
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js
new file mode 100644
index 0000000000..b0e2c34454
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--_]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--_]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..3ee7c822fe
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js
new file mode 100644
index 0000000000..e8e196e602
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js
new file mode 100644
index 0000000000..8ea07fbdf8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&\d]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&\d]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js
new file mode 100644
index 0000000000..7fa3a4a706
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&[0-9]]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&[0-9]]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js
new file mode 100644
index 0000000000..6c6898f212
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js
new file mode 100644
index 0000000000..7dd6517ddc
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&_]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..9d575bb488
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js
new file mode 100644
index 0000000000..1447201595
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js
new file mode 100644
index 0000000000..04edfead11
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}\d]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}\d]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js
new file mode 100644
index 0000000000..c1a5a351aa
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js
@@ -0,0 +1,53 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}[0-9]]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}[0-9]]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js
new file mode 100644
index 0000000000..bcf103f0cd
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js
@@ -0,0 +1,64 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5",
+ "5\uFE0F\u20E3",
+ "6",
+ "6\uFE0F\u20E3",
+ "7",
+ "7\uFE0F\u20E3",
+ "8",
+ "8\uFE0F\u20E3",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js
new file mode 100644
index 0000000000..cc98813665
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js
@@ -0,0 +1,45 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}_]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}_]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3",
+ "_"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..33ee72e371
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js
@@ -0,0 +1,44 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js
new file mode 100644
index 0000000000..039a93db08
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js
@@ -0,0 +1,47 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\p{Emoji_Keycap_Sequence}\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\p{Emoji_Keycap_Sequence}\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js
new file mode 100644
index 0000000000..c1400bb204
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js
@@ -0,0 +1,113 @@
+// GENERATED, DO NOT EDIT
+// file: regExpUtils.js
+// Copyright (C) 2017 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: |
+ Collection of functions used to assert the correctness of RegExp objects.
+defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator]
+---*/
+
+function buildString(args) {
+ // Use member expressions rather than destructuring `args` for improved
+ // compatibility with engines that only implement assignment patterns
+ // partially or not at all.
+ const loneCodePoints = args.loneCodePoints;
+ const ranges = args.ranges;
+ const CHUNK_SIZE = 10000;
+ let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints);
+ for (let i = 0; i < ranges.length; i++) {
+ const range = ranges[i];
+ const start = range[0];
+ const end = range[1];
+ const codePoints = [];
+ for (let length = 0, codePoint = start; codePoint <= end; codePoint++) {
+ codePoints[length++] = codePoint;
+ if (length === CHUNK_SIZE) {
+ result += Reflect.apply(String.fromCodePoint, null, codePoints);
+ codePoints.length = length = 0;
+ }
+ }
+ result += Reflect.apply(String.fromCodePoint, null, codePoints);
+ }
+ return result;
+}
+
+function printCodePoint(codePoint) {
+ const hex = codePoint
+ .toString(16)
+ .toUpperCase()
+ .padStart(6, "0");
+ return `U+${hex}`;
+}
+
+function printStringCodePoints(string) {
+ const buf = [];
+ for (const symbol of string) {
+ const formatted = printCodePoint(symbol.codePointAt(0));
+ buf.push(formatted);
+ }
+ return buf.join(' ');
+}
+
+function testPropertyEscapes(regExp, string, expression) {
+ if (!regExp.test(string)) {
+ for (const symbol of string) {
+ const hex = printCodePoint(symbol.codePointAt(0));
+ assert(
+ regExp.test(symbol),
+ `\`${ expression }\` should match U+${ hex } (\`${ symbol }\`)`
+ );
+ }
+ }
+}
+
+function testPropertyOfStrings(args) {
+ // Use member expressions rather than destructuring `args` for improved
+ // compatibility with engines that only implement assignment patterns
+ // partially or not at all.
+ const regExp = args.regExp;
+ const expression = args.expression;
+ const matchStrings = args.matchStrings;
+ const nonMatchStrings = args.nonMatchStrings;
+ const allStrings = matchStrings.join('');
+ if (!regExp.test(allStrings)) {
+ for (const string of matchStrings) {
+ assert(
+ regExp.test(string),
+ `\`${ expression }\` should match ${ string } (U+${ printStringCodePoints(string) })`
+ );
+ }
+ }
+
+ const allNonMatchStrings = nonMatchStrings.join('');
+ if (regExp.test(allNonMatchStrings)) {
+ for (const string of nonMatchStrings) {
+ assert(
+ !regExp.test(string),
+ `\`${ expression }\` should not match ${ string } (U+${ printStringCodePoints(string) })`
+ );
+ }
+ }
+}
+
+// The exact same logic can be used to test extended character classes
+// as enabled through the RegExp `v` flag. This is useful to test not
+// just standalone properties of strings, but also string literals, and
+// set operations.
+const testExtendedCharacterClass = testPropertyOfStrings;
+
+// Returns a function that validates a RegExp match result.
+//
+// Example:
+//
+// var validate = matchValidator(['b'], 1, 'abc');
+// validate(/b/.exec('abc'));
+//
+function matchValidator(expectedEntries, expectedIndex, expectedInput) {
+ return function(match) {
+ assert.compareArray(match, expectedEntries, 'Match entries');
+ assert.sameValue(match.index, expectedIndex, 'Match index');
+ assert.sameValue(match.input, expectedInput, 'Match input');
+ }
+}
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js
new file mode 100644
index 0000000000..b13c938c84
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\d]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--\d]",
+ matchStrings: [
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js
new file mode 100644
index 0000000000..a3ef0552dd
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--[0-9]]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--[0-9]]",
+ matchStrings: [
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js
new file mode 100644
index 0000000000..ba1d261d8c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js
new file mode 100644
index 0000000000..6eb6101bd2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--_]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--_]",
+ matchStrings: [
+ "0",
+ "2",
+ "4",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js
new file mode 100644
index 0000000000..536ea5bf38
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js
new file mode 100644
index 0000000000..e2f2390067
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js
@@ -0,0 +1,36 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}--\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js
new file mode 100644
index 0000000000..1237b67962
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\d]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\d]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js
new file mode 100644
index 0000000000..460b2804b1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&[0-9]]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&[0-9]]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js
new file mode 100644
index 0000000000..e7ad1ebeb3
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js
new file mode 100644
index 0000000000..ae77f9f293
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js
@@ -0,0 +1,36 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&_]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&_]",
+ matchStrings: [],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "9\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js
new file mode 100644
index 0000000000..5076985e42
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "0",
+ "2",
+ "4",
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js
new file mode 100644
index 0000000000..68e11545d4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js
new file mode 100644
index 0000000000..18cbc329f1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\d]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}\d]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js
new file mode 100644
index 0000000000..b9f90c941f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js
@@ -0,0 +1,43 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}[0-9]]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}[0-9]]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js
new file mode 100644
index 0000000000..f99051d766
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js
@@ -0,0 +1,54 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\p{ASCII_Hex_Digit}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}\p{ASCII_Hex_Digit}]",
+ matchStrings: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "9\uFE0F\u20E3",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js
new file mode 100644
index 0000000000..e0dec7af49
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js
@@ -0,0 +1,38 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}_]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}_]",
+ matchStrings: [
+ "0",
+ "2",
+ "4",
+ "9\uFE0F\u20E3",
+ "_"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js
new file mode 100644
index 0000000000..7a7c752812
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js
@@ -0,0 +1,47 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-unicode-property-escapes, regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\p{Emoji_Keycap_Sequence}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}\p{Emoji_Keycap_Sequence}]",
+ matchStrings: [
+ "#\uFE0F\u20E3",
+ "*\uFE0F\u20E3",
+ "0",
+ "0\uFE0F\u20E3",
+ "1\uFE0F\u20E3",
+ "2",
+ "2\uFE0F\u20E3",
+ "3\uFE0F\u20E3",
+ "4",
+ "4\uFE0F\u20E3",
+ "5\uFE0F\u20E3",
+ "6\uFE0F\u20E3",
+ "7\uFE0F\u20E3",
+ "8\uFE0F\u20E3",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js
new file mode 100644
index 0000000000..4ec89b131d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js
@@ -0,0 +1,37 @@
+// |reftest| skip -- regexp-v-flag is not supported
+// Copyright 2022 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+ Extended character classes enabled by the RegExp `v` flag support
+ properties of strings, string literals, and set operations
+info: |
+ Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
+ Unicode v14.0.0
+esid: sec-patterns
+features: [regexp-v-flag]
+includes: [regExpUtils.js]
+---*/
+
+testExtendedCharacterClass({
+ regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\q{0|2|4|9\uFE0F\u20E3}]+$/v,
+ expression: "[\q{0|2|4|9\uFE0F\u20E3}\q{0|2|4|9\uFE0F\u20E3}]",
+ matchStrings: [
+ "0",
+ "2",
+ "4",
+ "9\uFE0F\u20E3"
+ ],
+ nonMatchStrings: [
+ "6\uFE0F\u20E3",
+ "7",
+ "C",
+ "\u2603",
+ "\u{1D306}",
+ "\u{1F1E7}\u{1F1EA}"
+ ],
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js