Skip to content

Commit

Permalink
Re-add false positive check
Browse files Browse the repository at this point in the history
  • Loading branch information
tesuji authored and flip1995 committed Sep 3, 2019
1 parent 413eb5b commit 652840b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
6 changes: 6 additions & 0 deletions clippy_lints/src/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ fn on_argumentv1_new<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr, arm
if let PatKind::Tuple(ref pats, None) = arms[0].pats[0].node;
if pats.len() == 1;
then {
let ty = walk_ptrs_ty(cx.tables.pat_ty(&pats[0]));
if ty.sty != rustc::ty::Str && !match_type(cx, ty, &paths::STRING) {
return None;
}
if let ExprKind::Lit(ref lit) = format_args.node {
if let LitKind::Str(ref s, _) = lit.node {
return Some(format!("{:?}.to_string()", s.as_str()));
Expand All @@ -100,6 +104,8 @@ fn on_argumentv1_new<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr, arm
if path.ident.name == sym!(to_string) {
return Some(format!("{}", snip));
}
} else if let ExprKind::Binary(..) = format_args.node {
return Some(format!("{}", snip));
}
return Some(format!("{}.to_string()", snip));
}
Expand Down
4 changes: 4 additions & 0 deletions tests/ui/format.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,8 @@ fn main() {
42.to_string();
let x = std::path::PathBuf::from("/bar/foo/qux");
x.display().to_string();

// False positive
let a = "foo".to_string();
let _ = Some(a + "bar");
}
4 changes: 4 additions & 0 deletions tests/ui/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,8 @@ fn main() {
format!("{}", 42.to_string());
let x = std::path::PathBuf::from("/bar/foo/qux");
format!("{}", x.display().to_string());

// False positive
let a = "foo".to_string();
let _ = Some(format!("{}", a + "bar"));
}
8 changes: 7 additions & 1 deletion tests/ui/format.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,11 @@ error: useless use of `format!`
LL | format!("{}", x.display().to_string());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `x.display().to_string();`

error: aborting due to 12 previous errors
error: useless use of `format!`
--> $DIR/format.rs:69:18
|
LL | let _ = Some(format!("{}", a + "bar"));
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `a + "bar"`

error: aborting due to 13 previous errors

0 comments on commit 652840b

Please sign in to comment.