Merge pull request #2999 from flip1995/single_char_pattern

Fix single_char_pattern lint for escaped chars
This commit is contained in:
Philipp Hansch 2018-08-06 07:05:04 +01:00 committed by GitHub
commit f6c4e303c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 5 deletions

View file

@ -1899,11 +1899,8 @@ fn lint_chars_last_cmp_with_unwrap<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, info: &
fn lint_single_char_pattern<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, _expr: &'tcx hir::Expr, arg: &'tcx hir::Expr) {
if let Some((Constant::Str(r), _)) = constant(cx, cx.tables, arg) {
if r.len() == 1 {
let c = r.chars().next().unwrap();
let snip = snippet(cx, arg.span, "..");
let hint = snip.replace(
&format!("\"{}\"", c.escape_default()),
&format!("'{}'", c.escape_default()));
let hint = format!("'{}'", &snip[1..snip.len() - 1]);
span_lint_and_sugg(
cx,
SINGLE_CHAR_PATTERN,

View file

@ -42,4 +42,5 @@ fn main() {
h.contains("X"); // should not warn
x.replace(";", ",").split(","); // issue #2978
x.starts_with("\x03"); // issue #2996
}

View file

@ -114,5 +114,11 @@ error: single-character string constant used as pattern
44 | x.replace(";", ",").split(","); // issue #2978
| ^^^ help: try using a char instead: `','`
error: aborting due to 19 previous errors
error: single-character string constant used as pattern
--> $DIR/single_char_pattern.rs:45:19
|
45 | x.starts_with("/x03"); // issue #2996
| ^^^^^^ help: try using a char instead: `'/x03'`
error: aborting due to 20 previous errors