Merge pull request #2645 from TimNN/regex-bytes-utf8

Allow invalid UTF-8 in bytes Regexes
This commit is contained in:
Oliver Schneider 2018-04-08 08:58:38 +02:00 committed by GitHub
commit d247d9c690
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 31 deletions

View File

@ -187,7 +187,10 @@ fn check_set<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr, utf8: bool)
}
fn check_regex<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr, utf8: bool) {
let mut parser = regex_syntax::ParserBuilder::new().unicode(utf8).build();
let mut parser = regex_syntax::ParserBuilder::new()
.unicode(utf8)
.allow_invalid_utf8(!utf8)
.build();
if let ExprLit(ref lit) = expr.node {
if let LitKind::Str(ref r, style) = lit.node {

View File

@ -34,6 +34,7 @@ fn syntax_error() {
let bset = BRegexSet::new(&[
r"[a-z]+@[a-z]+\.(com|org|net)",
r"[a-z]+\.(com|org|net)",
r".", // regression test
]);
let set_error = RegexSet::new(&[

View File

@ -56,113 +56,113 @@ error: regex syntax error on position 0: unclosed group
| ^^^^^^^^^^^^^
error: regex syntax error on position 0: unclosed group
--> $DIR/regex.rs:40:9
--> $DIR/regex.rs:41:9
|
40 | OPENING_PAREN,
41 | OPENING_PAREN,
| ^^^^^^^^^^^^^
error: regex syntax error on position 0: unclosed group
--> $DIR/regex.rs:44:9
--> $DIR/regex.rs:45:9
|
44 | OPENING_PAREN,
45 | OPENING_PAREN,
| ^^^^^^^^^^^^^
error: regex syntax error: unrecognized escape sequence
--> $DIR/regex.rs:48:45
--> $DIR/regex.rs:49:45
|
48 | let raw_string_error = Regex::new(r"[...//...]");
49 | let raw_string_error = Regex::new(r"[...//...]");
| ^^
error: regex syntax error: unrecognized escape sequence
--> $DIR/regex.rs:49:46
--> $DIR/regex.rs:50:46
|
49 | let raw_string_error = Regex::new(r#"[...//...]"#);
50 | let raw_string_error = Regex::new(r#"[...//...]"#);
| ^^
error: trivial regex
--> $DIR/regex.rs:53:33
--> $DIR/regex.rs:54:33
|
53 | let trivial_eq = Regex::new("^foobar$");
54 | let trivial_eq = Regex::new("^foobar$");
| ^^^^^^^^^^
|
= help: consider using `==` on `str`s
error: trivial regex
--> $DIR/regex.rs:55:48
--> $DIR/regex.rs:56:48
|
55 | let trivial_eq_builder = RegexBuilder::new("^foobar$");
56 | let trivial_eq_builder = RegexBuilder::new("^foobar$");
| ^^^^^^^^^^
|
= help: consider using `==` on `str`s
error: trivial regex
--> $DIR/regex.rs:57:42
--> $DIR/regex.rs:58:42
|
57 | let trivial_starts_with = Regex::new("^foobar");
58 | let trivial_starts_with = Regex::new("^foobar");
| ^^^^^^^^^
|
= help: consider using `str::starts_with`
error: trivial regex
--> $DIR/regex.rs:59:40
--> $DIR/regex.rs:60:40
|
59 | let trivial_ends_with = Regex::new("foobar$");
60 | let trivial_ends_with = Regex::new("foobar$");
| ^^^^^^^^^
|
= help: consider using `str::ends_with`
error: trivial regex
--> $DIR/regex.rs:61:39
--> $DIR/regex.rs:62:39
|
61 | let trivial_contains = Regex::new("foobar");
62 | let trivial_contains = Regex::new("foobar");
| ^^^^^^^^
|
= help: consider using `str::contains`
error: trivial regex
--> $DIR/regex.rs:63:39
--> $DIR/regex.rs:64:39
|
63 | let trivial_contains = Regex::new(NOT_A_REAL_REGEX);
64 | let trivial_contains = Regex::new(NOT_A_REAL_REGEX);
| ^^^^^^^^^^^^^^^^
|
= help: consider using `str::contains`
error: trivial regex
--> $DIR/regex.rs:65:40
--> $DIR/regex.rs:66:40
|
65 | let trivial_backslash = Regex::new("a/.b");
66 | let trivial_backslash = Regex::new("a/.b");
| ^^^^^^^
|
= help: consider using `str::contains`
error: trivial regex
--> $DIR/regex.rs:68:36
--> $DIR/regex.rs:69:36
|
68 | let trivial_empty = Regex::new("");
69 | let trivial_empty = Regex::new("");
| ^^
|
= help: the regex is unlikely to be useful as it is
error: trivial regex
--> $DIR/regex.rs:70:36
--> $DIR/regex.rs:71:36
|
70 | let trivial_empty = Regex::new("^");
71 | let trivial_empty = Regex::new("^");
| ^^^
|
= help: the regex is unlikely to be useful as it is
error: trivial regex
--> $DIR/regex.rs:72:36
--> $DIR/regex.rs:73:36
|
72 | let trivial_empty = Regex::new("^$");
73 | let trivial_empty = Regex::new("^$");
| ^^^^
|
= help: consider using `str::is_empty`
error: trivial regex
--> $DIR/regex.rs:74:44
--> $DIR/regex.rs:75:44
|
74 | let binary_trivial_empty = BRegex::new("^$");
75 | let binary_trivial_empty = BRegex::new("^$");
| ^^^^
|
= help: consider using `str::is_empty`