ast => fail!("Unexpected AST item '{}'", ast),
}
}
- _ => {},
- }
- match c {
']' => {
if ranges.len() > 0 {
let flags = negated | (self.flags & FLAG_NOCASE);
}
return Ok(())
}
- c => {
- if self.peek_is(1, '-') && !self.peek_is(2, ']') {
- try!(self.expect('-'))
- try!(self.noteof("not a ']'"))
- let c2 = self.cur();
- if c2 < c {
- return self.err(format!("Invalid character class \
- range '{}-{}'",
- c,
- c2).as_slice())
- }
- ranges.push((c, self.cur()))
- } else {
- ranges.push((c, c))
- }
+ }
+
+ if self.peek_is(1, '-') && !self.peek_is(2, ']') {
+ try!(self.expect('-'))
+ try!(self.noteof("not a ']'"))
+ let c2 = self.cur();
+ if c2 < c {
+ return self.err(format!("Invalid character class \
+ range '{}-{}'",
+ c,
+ c2).as_slice())
}
+ ranges.push((c, self.cur()))
+ } else {
+ ranges.push((c, c))
}
}
}
assert_eq!(ms, vec![(0, 0), (1, 1), (2, 2), (3, 3)]);
}
+#[test]
+fn quoted_bracket_set() {
+ let re = regex!(r"([\x{5b}\x{5d}])");
+ let ms = re.find_iter("[]").collect::<Vec<(uint, uint)>>();
+ assert_eq!(ms, vec![(0, 1), (1, 2)]);
+ let re = regex!(r"([\[\]])");
+ let ms = re.find_iter("[]").collect::<Vec<(uint, uint)>>();
+ assert_eq!(ms, vec![(0, 1), (1, 2)]);
+}
+
macro_rules! replace(
($name:ident, $which:ident, $re:expr,
$search:expr, $replace:expr, $result:expr) => (