summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/literals
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/literals')
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js19
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js19
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js19
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.jsbin0 -> 715 bytes
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.jsbin0 -> 715 bytes
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-d.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-g.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.jsbin0 -> 853 bytes
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-u.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-y.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js20
-rw-r--r--js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js20
83 files changed, 1597 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js
new file mode 100644
index 0000000000..a63c3e1af7
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?i-i:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js
new file mode 100644
index 0000000000..c3b44f4796
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?m-m:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js
new file mode 100644
index 0000000000..92cfb0457d
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?ims-m:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js
new file mode 100644
index 0000000000..b8937aaa07
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?\u{0073}-s:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js
new file mode 100644
index 0000000000..e8d09f4cc6
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s-s:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js
new file mode 100644
index 0000000000..db06a2eb86
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by the first RegularExpressionFlags and the source text matched by the second RegularExpressionFlags are both empty. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js
new file mode 100644
index 0000000000..78c275e17f
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-ii:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js
new file mode 100644
index 0000000000..16f52d86f5
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-imsi:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js
new file mode 100644
index 0000000000..a392d5b0e0
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js
@@ -0,0 +1,19 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Regular expression modifiers should not parse without the colon.
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+---*/
+
+$DONOTEVALUATE();
+
+/(?ms-i)/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js
new file mode 100644
index 0000000000..46c3f4db43
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js
@@ -0,0 +1,19 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Regular expression modifiers should not parse without the colon.
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s)/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js
new file mode 100644
index 0000000000..e44077389c
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js
@@ -0,0 +1,19 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Regular expression modifiers should not parse without the colon.
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+---*/
+
+$DONOTEVALUATE();
+
+/(?i-)/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js
new file mode 100644
index 0000000000..62a138a3aa
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-1:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js
new file mode 100644
index 0000000000..958024fe65
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-iͥ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js
new file mode 100644
index 0000000000..45284e6d38
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-mͫ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js
new file mode 100644
index 0000000000..35bda819bd
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s̀:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js
new file mode 100644
index 0000000000..6567f99c37
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-d:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js
new file mode 100644
index 0000000000..ec8b2f03f8
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-g:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js
new file mode 100644
index 0000000000..e88cb7a696
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js
Binary files differ
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js
new file mode 100644
index 0000000000..90816752fb
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s‎:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js
new file mode 100644
index 0000000000..cd8ae0baf9
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-Q:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js
new file mode 100644
index 0000000000..23a1f23b72
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-u:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js
new file mode 100644
index 0000000000..be6d2e61dc
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-I:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js
new file mode 100644
index 0000000000..d65d6e6874
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-y:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js
new file mode 100644
index 0000000000..84e7253ef8
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s‍:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js
new file mode 100644
index 0000000000..7acc6a49e3
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js
new file mode 100644
index 0000000000..118ff69976
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-s‌:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js
new file mode 100644
index 0000000000..a63c3e1af7
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?i-i:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js
new file mode 100644
index 0000000000..c3b44f4796
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?m-m:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js
new file mode 100644
index 0000000000..20ad04b60d
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?m-ims:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js
new file mode 100644
index 0000000000..a3b3263fdf
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s-\u{0073}:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js
new file mode 100644
index 0000000000..e8d09f4cc6
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s-s:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js
new file mode 100644
index 0000000000..80352f948e
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?ii-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js
new file mode 100644
index 0000000000..1793724cfa
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?imsi-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js
new file mode 100644
index 0000000000..996963dbd0
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?1-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js
new file mode 100644
index 0000000000..616a537acb
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?iͥ-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js
new file mode 100644
index 0000000000..6fa734c89a
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?mͫ-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js
new file mode 100644
index 0000000000..d3d5aa8ce3
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s̀-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js
new file mode 100644
index 0000000000..b91c8bd612
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?d-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js
new file mode 100644
index 0000000000..c1e99de1ad
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?g-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js
new file mode 100644
index 0000000000..eec06fce52
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js
Binary files differ
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js
new file mode 100644
index 0000000000..6a00b90484
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‎-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js
new file mode 100644
index 0000000000..e351dd2e3b
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?Q-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js
new file mode 100644
index 0000000000..ae33a9ae34
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?u-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js
new file mode 100644
index 0000000000..c177ef76c7
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?I-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js
new file mode 100644
index 0000000000..65383882cc
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?y-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js
new file mode 100644
index 0000000000..c3d3032ea0
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‍-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js
new file mode 100644
index 0000000000..e4b702e4a7
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js
new file mode 100644
index 0000000000..eff2688281
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‌-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js
new file mode 100644
index 0000000000..7b922f651c
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?I-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js
new file mode 100644
index 0000000000..189fce143c
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?M-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js
new file mode 100644
index 0000000000..47dbf5aa9a
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?S-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js
new file mode 100644
index 0000000000..106b9b2add
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?İ-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js
new file mode 100644
index 0000000000..7b15fe7a09
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?ſ-:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js
new file mode 100644
index 0000000000..c07e0041c0
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-I:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js
new file mode 100644
index 0000000000..4afe34ff44
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-M:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js
new file mode 100644
index 0000000000..e83af36569
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-S:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js
new file mode 100644
index 0000000000..2a948073f0
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-İ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js
new file mode 100644
index 0000000000..7c2f23c502
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction )
+ ...
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?-ſ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js
new file mode 100644
index 0000000000..ff0d589e26
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?ii:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js
new file mode 100644
index 0000000000..7975935725
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?imsi:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js
new file mode 100644
index 0000000000..6569bbef01
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?1:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js
new file mode 100644
index 0000000000..7d557532d8
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?iͥ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js
new file mode 100644
index 0000000000..a09130e2df
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?mͫ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js
new file mode 100644
index 0000000000..a83fe10f9d
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s̀:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-d.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-d.js
new file mode 100644
index 0000000000..559b7b4566
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-d.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?d:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-g.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-g.js
new file mode 100644
index 0000000000..92304ef165
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-g.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?g:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js
new file mode 100644
index 0000000000..102dee02bc
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js
Binary files differ
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js
new file mode 100644
index 0000000000..b005b43c67
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‎:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js
new file mode 100644
index 0000000000..d144b58bd1
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?Q:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-u.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-u.js
new file mode 100644
index 0000000000..94805b1c8e
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-u.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?u:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js
new file mode 100644
index 0000000000..a1bd269c61
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?I:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-y.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-y.js
new file mode 100644
index 0000000000..399f5d8837
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-y.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?y:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js
new file mode 100644
index 0000000000..5f3c392313
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‍:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js
new file mode 100644
index 0000000000..37b0bf301b
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js
new file mode 100644
index 0000000000..5889fc154d
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?s‌:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js
new file mode 100644
index 0000000000..0c50a15058
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?I:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js
new file mode 100644
index 0000000000..38e290647e
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?M:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js
new file mode 100644
index 0000000000..a2c4ba26db
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?S:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js
new file mode 100644
index 0000000000..3a4efff07d
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?İ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js
new file mode 100644
index 0000000000..32ebb024e2
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?ſ:a)//*{ global-modifiers }*/;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js
new file mode 100644
index 0000000000..b2493e3855
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?\u0069:a)/u /* i */;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js
new file mode 100644
index 0000000000..cd1e66099c
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?\u006D:a)/u /* m */;
diff --git a/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js
new file mode 100644
index 0000000000..145ab4fe4a
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js
@@ -0,0 +1,20 @@
+// |reftest| skip error:SyntaxError -- regexp-modifiers is not supported
+// Copyright (C) 2024 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags)
+esid: sec-patterns-static-semantics-early-errors
+features: [regexp-modifiers]
+negative:
+ phase: parse
+ type: SyntaxError
+info: |
+ Atom :: ( ? RegularExpresisonFlags : Disjunction )
+ It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once.
+
+---*/
+
+$DONOTEVALUATE();
+
+/(?\u0073:a)/u /* s */;