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);