summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js')
-rw-r--r--js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js b/js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js
new file mode 100644
index 0000000000..17d8dddaaa
--- /dev/null
+++ b/js/src/tests/test262/language/literals/regexp/u-astral-char-class-invert.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-atom
+description: >
+ Literal astral symbols within inverted CharacterClass.
+info: |
+ The production Atom :: CharacterClass evaluates as follows:
+
+ 1. Evaluate CharacterClass to obtain a CharSet A and a Boolean invert.
+ 2. Call CharacterSetMatcher(A, invert, direction) and return its Matcher result.
+
+ Runtime Semantics: CharacterSetMatcher ( A, invert, direction )
+
+ 1. Return an internal Matcher closure that takes two arguments, a State x and
+ a Continuation c, and performs the following steps:
+ [...]
+ f. Let cc be Canonicalize(ch).
+ g. If invert is false, then
+ [...]
+ h. Else,
+ i. Assert: invert is true.
+ ii. If there exists a member a of set A such that Canonicalize(a) is cc,
+ return failure.
+---*/
+
+assert.sameValue(/^[^โค๏ธ]$/u.exec("โค๏ธ"), null);
+assert.sameValue(/^[^๐Ÿงก]/u.exec("๐Ÿงก"), null);
+assert.sameValue(/[^๐Ÿ’›]$/u.exec("๐Ÿ’›"), null);
+assert.sameValue(/[^๐Ÿ’š]/u.exec("๐Ÿ’š"), null);
+
+reportCompare(0, 0);