Fixes #13843.
An empty regex is a valid regex that always matches. This behavior is consistent with at least Go and Python. A couple regression tests are included.
This commit is contained in:
parent
f5ead0dd66
commit
9d39178f2f
@ -201,6 +201,9 @@ pub fn parse(s: &str) -> Result<Ast, Error> {
|
||||
|
||||
impl<'a> Parser<'a> {
|
||||
fn parse(&mut self) -> Result<Ast, Error> {
|
||||
if self.chars.len() == 0 {
|
||||
return Ok(Nothing);
|
||||
}
|
||||
loop {
|
||||
let c = self.cur();
|
||||
match c {
|
||||
|
@ -28,6 +28,20 @@ fn split() {
|
||||
assert_eq!(subs, vec!("cauchy", "plato", "tyler", "binx"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_regex_empty_match() {
|
||||
let re = regex!("");
|
||||
let ms = re.find_iter("").collect::<Vec<(uint, uint)>>();
|
||||
assert_eq!(ms, vec![(0, 0)]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_regex_nonempty_match() {
|
||||
let re = regex!("");
|
||||
let ms = re.find_iter("abc").collect::<Vec<(uint, uint)>>();
|
||||
assert_eq!(ms, vec![(0, 0), (1, 1), (2, 2), (3, 3)]);
|
||||
}
|
||||
|
||||
macro_rules! replace(
|
||||
($name:ident, $which:ident, $re:expr,
|
||||
$search:expr, $replace:expr, $result:expr) => (
|
||||
|
Loading…
Reference in New Issue
Block a user