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)
|
12.0.1 (2020-03-29)
|
||||||
===================
|
===================
|
||||||
ripgrep 12.0.1 is a small patch release that includes a minor bug fix relating
|
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::Empty
|
||||||
| HirKind::Literal(_)
|
| HirKind::Literal(_)
|
||||||
| HirKind::Class(_)
|
| HirKind::Class(_)
|
||||||
| HirKind::Repetition(_)
|
|
||||||
| HirKind::Concat(_)
|
| HirKind::Concat(_)
|
||||||
| HirKind::Alternation(_) => true,
|
| HirKind::Alternation(_) => true,
|
||||||
HirKind::Anchor(_) | HirKind::WordBoundary(_) | HirKind::Group(_) => {
|
HirKind::Anchor(_)
|
||||||
false
|
| HirKind::WordBoundary(_)
|
||||||
}
|
| HirKind::Group(_)
|
||||||
|
| HirKind::Repetition(_) => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,8 +412,17 @@ mod tests {
|
|||||||
// https://github.com/BurntSushi/ripgrep/issues/1319
|
// https://github.com/BurntSushi/ripgrep/issues/1319
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
one_regex(r"TTGAGTCCAGGAG[ATCG]{2}C"),
|
one_regex(r"TTGAGTCCAGGAG[ATCG]{2}C"),
|
||||||
pat("TTGAGTCCAGGAGA|TTGAGTCCAGGAGC|\
|
pat("TTGAGTCCAGGAG"),
|
||||||
TTGAGTCCAGGAGG|TTGAGTCCAGGAGT")
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[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());
|
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