tor-browser

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

unicode_restricted_octal_escape.js (4624B)


      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 - Octal 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: "CharacterEscape[U] :: [~U] LegacyOctalEscapeSequence"
     10 es6id: 21.1.2
     11 ---*/
     12 
     13 // DecimalEscape without leading 0 in AtomEscape.
     14 //
     15 // AtomEscape[U] :: DecimalEscape
     16 // DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit]
     17 assert.throws(SyntaxError, function() {
     18  RegExp("\\1", "u");
     19 }, 'RegExp("\\1", "u"): ');
     20 assert.throws(SyntaxError, function() {
     21  RegExp("\\2", "u");
     22 }, 'RegExp("\\2", "u"): ');
     23 assert.throws(SyntaxError, function() {
     24  RegExp("\\3", "u");
     25 }, 'RegExp("\\3", "u"): ');
     26 assert.throws(SyntaxError, function() {
     27  RegExp("\\4", "u");
     28 }, 'RegExp("\\4", "u"): ');
     29 assert.throws(SyntaxError, function() {
     30  RegExp("\\5", "u");
     31 }, 'RegExp("\\5", "u"): ');
     32 assert.throws(SyntaxError, function() {
     33  RegExp("\\6", "u");
     34 }, 'RegExp("\\6", "u"): ');
     35 assert.throws(SyntaxError, function() {
     36  RegExp("\\7", "u");
     37 }, 'RegExp("\\7", "u"): ');
     38 assert.throws(SyntaxError, function() {
     39  RegExp("\\8", "u");
     40 }, 'RegExp("\\8", "u"): ');
     41 assert.throws(SyntaxError, function() {
     42  RegExp("\\9", "u");
     43 }, 'RegExp("\\9", "u"): ');
     44 
     45 
     46 // DecimalEscape without leading 0 in ClassEscape.
     47 //
     48 // ClassEscape[U] :: DecimalEscape
     49 // DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit]
     50 assert.throws(SyntaxError, function() {
     51  RegExp("[\\1]", "u");
     52 }, 'RegExp("[\\1]", "u"): ');
     53 assert.throws(SyntaxError, function() {
     54  RegExp("[\\2]", "u");
     55 }, 'RegExp("[\\2]", "u"): ');
     56 assert.throws(SyntaxError, function() {
     57  RegExp("[\\3]", "u");
     58 }, 'RegExp("[\\3]", "u"): ');
     59 assert.throws(SyntaxError, function() {
     60  RegExp("[\\4]", "u");
     61 }, 'RegExp("[\\4]", "u"): ');
     62 assert.throws(SyntaxError, function() {
     63  RegExp("[\\5]", "u");
     64 }, 'RegExp("[\\5]", "u"): ');
     65 assert.throws(SyntaxError, function() {
     66  RegExp("[\\6]", "u");
     67 }, 'RegExp("[\\6]", "u"): ');
     68 assert.throws(SyntaxError, function() {
     69  RegExp("[\\7]", "u");
     70 }, 'RegExp("[\\7]", "u"): ');
     71 assert.throws(SyntaxError, function() {
     72  RegExp("[\\8]", "u");
     73 }, 'RegExp("[\\8]", "u"): ');
     74 assert.throws(SyntaxError, function() {
     75  RegExp("[\\9]", "u");
     76 }, 'RegExp("[\\9]", "u"): ');
     77 
     78 
     79 // DecimalEscape with leading 0 in AtomEscape.
     80 //
     81 // Atom[U] :: DecimalEscape
     82 // DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit]
     83 assert.throws(SyntaxError, function() {
     84  RegExp("\\00", "u");
     85 }, 'RegExp("\\00", "u"): ');
     86 assert.throws(SyntaxError, function() {
     87  RegExp("\\01", "u");
     88 }, 'RegExp("\\01", "u"): ');
     89 assert.throws(SyntaxError, function() {
     90  RegExp("\\02", "u");
     91 }, 'RegExp("\\02", "u"): ');
     92 assert.throws(SyntaxError, function() {
     93  RegExp("\\03", "u");
     94 }, 'RegExp("\\03", "u"): ');
     95 assert.throws(SyntaxError, function() {
     96  RegExp("\\04", "u");
     97 }, 'RegExp("\\04", "u"): ');
     98 assert.throws(SyntaxError, function() {
     99  RegExp("\\05", "u");
    100 }, 'RegExp("\\05", "u"): ');
    101 assert.throws(SyntaxError, function() {
    102  RegExp("\\06", "u");
    103 }, 'RegExp("\\06", "u"): ');
    104 assert.throws(SyntaxError, function() {
    105  RegExp("\\07", "u");
    106 }, 'RegExp("\\07", "u"): ');
    107 assert.throws(SyntaxError, function() {
    108  RegExp("\\08", "u");
    109 }, 'RegExp("\\08", "u"): ');
    110 assert.throws(SyntaxError, function() {
    111  RegExp("\\09", "u");
    112 }, 'RegExp("\\09", "u"): ');
    113 
    114 
    115 // DecimalEscape with leading 0 in ClassEscape.
    116 //
    117 // ClassEscape[U] :: DecimalEscape
    118 // DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit]
    119 assert.throws(SyntaxError, function() {
    120  RegExp("[\\00]", "u");
    121 }, 'RegExp("[\\00]", "u"): ');
    122 assert.throws(SyntaxError, function() {
    123  RegExp("[\\01]", "u");
    124 }, 'RegExp("[\\01]", "u"): ');
    125 assert.throws(SyntaxError, function() {
    126  RegExp("[\\02]", "u");
    127 }, 'RegExp("[\\02]", "u"): ');
    128 assert.throws(SyntaxError, function() {
    129  RegExp("[\\03]", "u");
    130 }, 'RegExp("[\\03]", "u"): ');
    131 assert.throws(SyntaxError, function() {
    132  RegExp("[\\04]", "u");
    133 }, 'RegExp("[\\04]", "u"): ');
    134 assert.throws(SyntaxError, function() {
    135  RegExp("[\\05]", "u");
    136 }, 'RegExp("[\\05]", "u"): ');
    137 assert.throws(SyntaxError, function() {
    138  RegExp("[\\06]", "u");
    139 }, 'RegExp("[\\06]", "u"): ');
    140 assert.throws(SyntaxError, function() {
    141  RegExp("[\\07]", "u");
    142 }, 'RegExp("[\\07]", "u"): ');
    143 assert.throws(SyntaxError, function() {
    144  RegExp("[\\08]", "u");
    145 }, 'RegExp("[\\08]", "u"): ');
    146 assert.throws(SyntaxError, function() {
    147  RegExp("[\\09]", "u");
    148 }, 'RegExp("[\\09]", "u"): ');
    149 
    150 reportCompare(0, 0);