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()));
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));
}
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");
}
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"));
}
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