unicode_restricted_character_class_escape.js (2442B)
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 - ClassEscape in range expression 6 info: | 7 The compatibility extensions defined in B.1.4 Regular Expressions Patterns 8 are not applied for Unicode RegExp. 9 Tested extension: "ClassAtomNoDashInRange :: \ ClassEscape but only if ClassEscape evaluates to a CharSet with exactly one character" 10 es6id: 21.2.2.15.1 11 ---*/ 12 13 // Leading CharacterClassEscape. 14 assert.throws(SyntaxError, function() { 15 RegExp("[\\d-a]", "u"); 16 }, 'RegExp("[\\d-a]", "u"): '); 17 assert.throws(SyntaxError, function() { 18 RegExp("[\\D-a]", "u"); 19 }, 'RegExp("[\\D-a]", "u"): '); 20 assert.throws(SyntaxError, function() { 21 RegExp("[\\s-a]", "u"); 22 }, 'RegExp("[\\s-a]", "u"): '); 23 assert.throws(SyntaxError, function() { 24 RegExp("[\\S-a]", "u"); 25 }, 'RegExp("[\\S-a]", "u"): '); 26 assert.throws(SyntaxError, function() { 27 RegExp("[\\w-a]", "u"); 28 }, 'RegExp("[\\w-a]", "u"): '); 29 assert.throws(SyntaxError, function() { 30 RegExp("[\\W-a]", "u"); 31 }, 'RegExp("[\\W-a]", "u"): '); 32 33 34 // Trailing CharacterClassEscape. 35 assert.throws(SyntaxError, function() { 36 RegExp("[a-\\d]", "u"); 37 }, 'RegExp("[a-\\d]", "u"): '); 38 assert.throws(SyntaxError, function() { 39 RegExp("[a-\\D]", "u"); 40 }, 'RegExp("[a-\\D]", "u"): '); 41 assert.throws(SyntaxError, function() { 42 RegExp("[a-\\s]", "u"); 43 }, 'RegExp("[a-\\s]", "u"): '); 44 assert.throws(SyntaxError, function() { 45 RegExp("[a-\\S]", "u"); 46 }, 'RegExp("[a-\\S]", "u"): '); 47 assert.throws(SyntaxError, function() { 48 RegExp("[a-\\w]", "u"); 49 }, 'RegExp("[a-\\w]", "u"): '); 50 assert.throws(SyntaxError, function() { 51 RegExp("[a-\\W]", "u"); 52 }, 'RegExp("[a-\\W]", "u"): '); 53 54 55 // Leading and trailing CharacterClassEscape. 56 assert.throws(SyntaxError, function() { 57 RegExp("[\\d-\\d]", "u"); 58 }, 'RegExp("[\\d-\\d]", "u"): '); 59 assert.throws(SyntaxError, function() { 60 RegExp("[\\D-\\D]", "u"); 61 }, 'RegExp("[\\D-\\D]", "u"): '); 62 assert.throws(SyntaxError, function() { 63 RegExp("[\\s-\\s]", "u"); 64 }, 'RegExp("[\\s-\\s]", "u"): '); 65 assert.throws(SyntaxError, function() { 66 RegExp("[\\S-\\S]", "u"); 67 }, 'RegExp("[\\S-\\S]", "u"): '); 68 assert.throws(SyntaxError, function() { 69 RegExp("[\\w-\\w]", "u"); 70 }, 'RegExp("[\\w-\\w]", "u"): '); 71 assert.throws(SyntaxError, function() { 72 RegExp("[\\W-\\W]", "u"); 73 }, 'RegExp("[\\W-\\W]", "u"): '); 74 75 reportCompare(0, 0);