Bug 1892041 - Part 2: Update test262. r=spidermonkey-reviewers,dminor
[gecko.git] / js / src / tests / test262 / built-ins / RegExp / unicode_restricted_identity_escape.js
blob3b71e992b6663157ec77dfad18a8cab95ea1eec9
1 // Copyright (C) 2015 AndrĂ© Bargull. All rights reserved.
2 // This code is governed by the BSD license found in the LICENSE file.
4 /*---
5 description: B.1.4 is not applied for Unicode RegExp - Identity escape with basic latin characters
6 info: |
7     The compatibility extensions defined in B.1.4 Regular Expressions Patterns
8     are not applied for Unicode RegExps.
9     Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c"
10 es6id: 21.1.2
11 ---*/
13 function isSyntaxCharacter(c) {
14   switch (c) {
15     case "^":
16     case "$":
17     case "\\":
18     case ".":
19     case "*":
20     case "+":
21     case "?":
22     case "(":
23     case ")":
24     case "[":
25     case "]":
26     case "{":
27     case "}":
28     case "|":
29       return true;
30     default:
31       return false;
32   }
35 function isAlphaDigit(c) {
36   return ("0" <= c && c <= "9") || ("A" <= c && c <= "Z") || ("a" <= c && c <= "z");
40 // IdentityEscape in AtomEscape.
42 // AtomEscape[U] :: CharacterEscape[?U]
43 // CharacterEscape[U] :: IdentityEscape[?U]
44 for (var cu = 0x00; cu <= 0x7f; ++cu) {
45   var s = String.fromCharCode(cu);
46   if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/") {
47     assert.throws(SyntaxError, function() {
48       RegExp("\\" + s, "u");
49     }, "Invalid IdentityEscape in AtomEscape: '\\" + s + "'");
50   }
54 // IdentityEscape in ClassEscape.
56 // ClassEscape[U] :: CharacterEscape[?U]
57 // CharacterEscape[U] :: IdentityEscape[?U]
58 for (var cu = 0x00; cu <= 0x7f; ++cu) {
59   var s = String.fromCharCode(cu);
60   if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/" && s !== "-") {
61     assert.throws(SyntaxError, function() {
62       RegExp("[\\" + s + "]", "u");
63     }, "Invalid IdentityEscape in ClassEscape: '\\" + s + "'");
64   }
67 reportCompare(0, 0);