tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

unicode_restricted_identity_escape_u.js (2578B)


      1 // Copyright (C) 2015 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: B.1.4 is not applied for Unicode RegExp - Incomplete Unicode escape sequences
      6 info: |
      7    The compatibility extensions defined in B.1.4 Regular Expressions Patterns
      8    are not applied for Unicode RegExp.
      9    Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c"
     10 es6id: 21.1.2
     11 ---*/
     12 
     13 // Incomplete RegExpUnicodeEscapeSequence in AtomEscape not parsed as IdentityEscape.
     14 //
     15 // AtomEscape[U] :: CharacterEscape[?U]
     16 // CharacterEscape[U] :: RegExpUnicodeEscapeSequence[?U]
     17 assert.throws(SyntaxError, function() {
     18  RegExp("\\u", "u");
     19 }, 'RegExp("\\u", "u"): ');
     20 assert.throws(SyntaxError, function() {
     21  RegExp("\\u1", "u");
     22 }, 'RegExp("\\u1", "u"): ');
     23 assert.throws(SyntaxError, function() {
     24  RegExp("\\u12", "u");
     25 }, 'RegExp("\\u12", "u"): ');
     26 assert.throws(SyntaxError, function() {
     27  RegExp("\\u123", "u");
     28 }, 'RegExp("\\u123", "u"): ');
     29 assert.throws(SyntaxError, function() {
     30  RegExp("\\u{", "u");
     31 }, 'RegExp("\\u{", "u"): ');
     32 assert.throws(SyntaxError, function() {
     33  RegExp("\\u{}", "u");
     34 }, 'RegExp("\\u{}", "u"): ');
     35 assert.throws(SyntaxError, function() {
     36  RegExp("\\u{1", "u");
     37 }, 'RegExp("\\u{1", "u"): ');
     38 assert.throws(SyntaxError, function() {
     39  RegExp("\\u{12", "u");
     40 }, 'RegExp("\\u{12", "u"): ');
     41 assert.throws(SyntaxError, function() {
     42  RegExp("\\u{123", "u");
     43 }, 'RegExp("\\u{123", "u"): ');
     44 
     45 
     46 // Incomplete RegExpUnicodeEscapeSequence in ClassEscape not parsed as IdentityEscape.
     47 //
     48 // ClassEscape[U] :: CharacterEscape[?U]
     49 // CharacterEscape[U] :: RegExpUnicodeEscapeSequence[?U]
     50 assert.throws(SyntaxError, function() {
     51  RegExp("[\\u]", "u");
     52 }, 'RegExp("[\\u]", "u"): ');
     53 assert.throws(SyntaxError, function() {
     54  RegExp("[\\u1]", "u");
     55 }, 'RegExp("[\\u1]", "u"): ');
     56 assert.throws(SyntaxError, function() {
     57  RegExp("[\\u12]", "u");
     58 }, 'RegExp("[\\u12]", "u"): ');
     59 assert.throws(SyntaxError, function() {
     60  RegExp("[\\u123]", "u");
     61 }, 'RegExp("[\\u123]", "u"): ');
     62 assert.throws(SyntaxError, function() {
     63  RegExp("[\\u{]", "u");
     64 }, 'RegExp("[\\u{]", "u"): ');
     65 assert.throws(SyntaxError, function() {
     66  RegExp("[\\u{}]", "u");
     67 }, 'RegExp("[\\u{}]", "u"): ');
     68 assert.throws(SyntaxError, function() {
     69  RegExp("[\\u{1]", "u");
     70 }, 'RegExp("[\\u{1]", "u"): ');
     71 assert.throws(SyntaxError, function() {
     72  RegExp("[\\u{12]", "u");
     73 }, 'RegExp("[\\u{12]", "u"): ');
     74 assert.throws(SyntaxError, function() {
     75  RegExp("[\\u{123]", "u");
     76 }, 'RegExp("[\\u{123]", "u"): ');
     77 
     78 reportCompare(0, 0);