S7.8.5_A2.4_T2.js (1573B)
1 // Copyright 2009 the Sputnik authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 info: | 6 RegularExpressionChar :: BackslashSequence :: \NonTerminator, 7 RegularExpressionFlags :: [empty] 8 es5id: 7.8.5_A2.4_T2 9 description: Complex test with eval, using syntax pattern 10 ---*/ 11 12 for (var cu = 0; cu <= 0xffff; ++cu) { 13 var Elimination = 14 ((cu === 0x002A) || (cu === 0x002F) || (cu === 0x005C) || (cu === 0x002B) || 15 (cu === 0x003F) || (cu === 0x0028) || (cu === 0x0029) || 16 (cu === 0x005B) || (cu === 0x005D) || (cu === 0x007B) || (cu === 0x007D)); 17 /* 18 * \u002A / \u002F \ \u005C + \u002B 19 ? \u003F ( \u0028 ) \u0029 20 [ \u005B ] \u005D { \u007B } \u007D 21 */ 22 var LineTerminator = ((cu === 0x000A) || (cu === 0x000D) || (cu === 0x2028) || (cu === 0x2029)); 23 if ((Elimination || LineTerminator ) === false) { 24 var xx = "a\\" + String.fromCharCode(cu); 25 try { 26 var pattern = eval("/" + xx + "/"); 27 } catch (e) { 28 var identifierPartNotUnicodeIDContinue = ((cu === 0x0024) || (cu === 0x200C) || (cu === 0x200D)); 29 if (e instanceof SyntaxError && !identifierPartNotUnicodeIDContinue) { 30 // Use eval with var-declaration to check if `cu` is in UnicodeIDContinue. 31 try { 32 eval("var _" + String.fromCharCode(cu)); 33 continue; 34 } catch (ignore) { } 35 } 36 throw e; 37 } 38 assert.sameValue(pattern.source, xx, "Code unit: " + cu.toString(16)); 39 } 40 } 41 42 reportCompare(0, 0);