| /* |
| * Check that builtin character classes within ranges produce syntax |
| * errors. |
| * |
| * Note: /\b/ is the backspace escape, which is a single pattern character, |
| * though it looks deceptively like a character class. |
| */ |
| |
| function isRegExpSyntaxError(pattern) { |
| try { |
| var re = new RegExp(pattern); |
| } catch (e) { |
| if (e instanceof SyntaxError) |
| return true; |
| } |
| return false; |
| } |
| |
| //assertEq(isRegExpSyntaxError('[C-\\s]'), false); |
| //assertEq(isRegExpSyntaxError('[C-\\d]'), false); |
| //assertEq(isRegExpSyntaxError('[C-\\W]'), false); |
| assertEq(isRegExpSyntaxError('[C-]'), false); |
| assertEq(isRegExpSyntaxError('[-C]'), false); |
| assertEq(isRegExpSyntaxError('[C-C]'), false); |
| assertEq(isRegExpSyntaxError('[C-C]'), false); |
| assertEq(isRegExpSyntaxError('[\\b-\\b]'), false); |
| assertEq(isRegExpSyntaxError('[\\B-\\B]'), false); |
| assertEq(isRegExpSyntaxError('[\\b-\\B]'), false); |
| assertEq(isRegExpSyntaxError('[\\B-\\b]'), true); |
| //assertEq(isRegExpSyntaxError('[\\b-\\w]'), false); |
| //assertEq(isRegExpSyntaxError('[\\B-\\w]'), false); |
| |
| /* Extension. */ |
| assertEq(isRegExpSyntaxError('[\\s-\\s]'), false); |
| assertEq(isRegExpSyntaxError('[\\W-\\s]'), false); |
| assertEq(isRegExpSyntaxError('[\\s-\\W]'), false); |
| assertEq(isRegExpSyntaxError('[\\W-C]'), false); |
| assertEq(isRegExpSyntaxError('[\\d-C]'), false); |
| assertEq(isRegExpSyntaxError('[\\s-C]'), false); |
| assertEq(isRegExpSyntaxError('[\\w-\\b]'), false); |
| assertEq(isRegExpSyntaxError('[\\w-\\B]'), false); |