case '^':
case '`':
case '~':
- if (s->unicode_sets && p[1] == c) {
+ if (inclass && s->unicode_sets && p[1] == c) {
/* forbidden double characters */
return re_parse_error(s, "invalid class set operation in regular expression");
}
case '/':
case '-':
case '|':
- if (s->unicode_sets) {
+ if (inclass && s->unicode_sets) {
/* invalid characters in unicode sets */
return re_parse_error(s, "invalid character in class in regular expression");
}
a = a.exec("\u{10000}_\u{10000}");
assert(a.indices[0][0], 0);
assert(a.indices[0][1], 2);
+
+ /* syntax check */
+ assert(/-&&/v.test("-&&"), true);
}
function test_symbol()