Escape a single quote in single_char_pattern hint

This commit is contained in:
Klemen Košir 2019-04-08 21:55:50 +09:00
parent 4fdd113bed
commit 560fd163d6
No known key found for this signature in database
GPG key ID: 1A1E63D70E656B8B
4 changed files with 21 additions and 4 deletions

View file

@ -2143,7 +2143,8 @@ fn lint_single_char_pattern<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, _expr: &'tcx h
then {
let mut applicability = Applicability::MachineApplicable;
let snip = snippet_with_applicability(cx, arg.span, "..", &mut applicability);
let hint = format!("'{}'", &snip[1..snip.len() - 1]);
let c = &snip[1..snip.len() - 1];
let hint = format!("'{}'", if c == "'" { "\\'" } else { c });
span_lint_and_sugg(
cx,
SINGLE_CHAR_PATTERN,

View file

@ -41,6 +41,8 @@ fn main() {
x.trim_end_matches('x');
// Make sure we escape characters correctly.
x.split('\n');
x.split('\'');
x.split('\'');
let h = HashSet::<String>::new();
h.contains("X"); // should not warn

View file

@ -41,6 +41,8 @@ fn main() {
x.trim_end_matches("x");
// Make sure we escape characters correctly.
x.split("\n");
x.split("'");
x.split("\'");
let h = HashSet::<String>::new();
h.contains("X"); // should not warn

View file

@ -109,16 +109,28 @@ LL | x.split("/n");
| ^^^^ help: try using a char instead: `'/n'`
error: single-character string constant used as pattern
--> $DIR/single_char_pattern.rs:48:31
--> $DIR/single_char_pattern.rs:44:13
|
LL | x.split("'");
| ^^^ help: try using a char instead: `'/''`
error: single-character string constant used as pattern
--> $DIR/single_char_pattern.rs:45:13
|
LL | x.split("/'");
| ^^^^ help: try using a char instead: `'/''`
error: single-character string constant used as pattern
--> $DIR/single_char_pattern.rs:50:31
|
LL | x.replace(";", ",").split(","); // issue #2978
| ^^^ help: try using a char instead: `','`
error: single-character string constant used as pattern
--> $DIR/single_char_pattern.rs:49:19
--> $DIR/single_char_pattern.rs:51:19
|
LL | x.starts_with("/x03"); // issue #2996
| ^^^^^^ help: try using a char instead: `'/x03'`
error: aborting due to 20 previous errors
error: aborting due to 22 previous errors