mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-03-03 14:32:22 +02:00
regex: fix another inner literal bug
It looks like `is_simple` wasn't quite correct. I can't wait until this code is rewritten. It is still not quite clearly correct to me. Fixes #1537
This commit is contained in:
parent
3d6a58faff
commit
1c4b5adb7b
@ -1,3 +1,11 @@
|
||||
TBD
|
||||
===
|
||||
Bug fixes:
|
||||
|
||||
* [BUG #1537](https://github.com/BurntSushi/ripgrep/issues/1537):
|
||||
Fix match bug caused by inner literal optimization.
|
||||
|
||||
|
||||
12.0.1 (2020-03-29)
|
||||
===================
|
||||
ripgrep 12.0.1 is a small patch release that includes a minor bug fix relating
|
||||
|
@ -326,12 +326,12 @@ fn is_simple(expr: &Hir) -> bool {
|
||||
HirKind::Empty
|
||||
| HirKind::Literal(_)
|
||||
| HirKind::Class(_)
|
||||
| HirKind::Repetition(_)
|
||||
| HirKind::Concat(_)
|
||||
| HirKind::Alternation(_) => true,
|
||||
HirKind::Anchor(_) | HirKind::WordBoundary(_) | HirKind::Group(_) => {
|
||||
false
|
||||
}
|
||||
HirKind::Anchor(_)
|
||||
| HirKind::WordBoundary(_)
|
||||
| HirKind::Group(_)
|
||||
| HirKind::Repetition(_) => false,
|
||||
}
|
||||
}
|
||||
|
||||
@ -412,8 +412,17 @@ mod tests {
|
||||
// https://github.com/BurntSushi/ripgrep/issues/1319
|
||||
assert_eq!(
|
||||
one_regex(r"TTGAGTCCAGGAG[ATCG]{2}C"),
|
||||
pat("TTGAGTCCAGGAGA|TTGAGTCCAGGAGC|\
|
||||
TTGAGTCCAGGAGG|TTGAGTCCAGGAGT")
|
||||
pat("TTGAGTCCAGGAG"),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn regression_1537() {
|
||||
// Regression from:
|
||||
// https://github.com/BurntSushi/ripgrep/issues/1537
|
||||
assert_eq!(one_regex(r";(.*,)"), pat(";"));
|
||||
assert_eq!(one_regex(r";((.*,))"), pat(";"));
|
||||
assert_eq!(one_regex(r";(.*,)+"), pat(";"),);
|
||||
assert_eq!(one_regex(r";(.*,){1}"), pat(";"),);
|
||||
}
|
||||
}
|
||||
|
@ -791,3 +791,11 @@ rgtest!(
|
||||
eqnice!("repotree/not-ignored\n", cmd.stdout());
|
||||
}
|
||||
);
|
||||
|
||||
// See: https://github.com/BurntSushi/ripgrep/issues/1537
|
||||
rgtest!(r1537, |dir: Dir, mut cmd: TestCommand| {
|
||||
dir.create("foo", "abc;de,fg");
|
||||
|
||||
let expected = "foo:abc;de,fg\n";
|
||||
eqnice!(expected, cmd.arg(";(.*,){1}").stdout());
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user