diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js')
-rw-r--r-- | js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js new file mode 100644 index 0000000000..3b71e992b6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js @@ -0,0 +1,67 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Identity escape with basic latin characters +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExps. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" +es6id: 21.1.2 +---*/ + +function isSyntaxCharacter(c) { + switch (c) { + case "^": + case "$": + case "\\": + case ".": + case "*": + case "+": + case "?": + case "(": + case ")": + case "[": + case "]": + case "{": + case "}": + case "|": + return true; + default: + return false; + } +} + +function isAlphaDigit(c) { + return ("0" <= c && c <= "9") || ("A" <= c && c <= "Z") || ("a" <= c && c <= "z"); +} + + +// IdentityEscape in AtomEscape. +// +// AtomEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: IdentityEscape[?U] +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/") { + assert.throws(SyntaxError, function() { + RegExp("\\" + s, "u"); + }, "Invalid IdentityEscape in AtomEscape: '\\" + s + "'"); + } +} + + +// IdentityEscape in ClassEscape. +// +// ClassEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: IdentityEscape[?U] +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/" && s !== "-") { + assert.throws(SyntaxError, function() { + RegExp("[\\" + s + "]", "u"); + }, "Invalid IdentityEscape in ClassEscape: '\\" + s + "'"); + } +} + +reportCompare(0, 0); |