mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-30 16:39:26 +00:00
useless use of format! should return function directly
This commit is contained in:
parent
52c8c9c520
commit
c6b381c59b
4 changed files with 21 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
||||||
use clippy_utils::diagnostics::span_lint_and_then;
|
use clippy_utils::diagnostics::span_lint_and_then;
|
||||||
use clippy_utils::paths;
|
use clippy_utils::paths;
|
||||||
use clippy_utils::source::{snippet, snippet_opt};
|
use clippy_utils::source::{snippet, snippet_opt};
|
||||||
|
use clippy_utils::sugg::Sugg;
|
||||||
use clippy_utils::ty::is_type_diagnostic_item;
|
use clippy_utils::ty::is_type_diagnostic_item;
|
||||||
use clippy_utils::{is_expn_of, last_path_segment, match_def_path, match_function_call};
|
use clippy_utils::{is_expn_of, last_path_segment, match_def_path, match_function_call};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
|
@ -100,15 +101,15 @@ fn on_argumentv1_new<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>, arms: &
|
||||||
return Some(format!("{:?}.to_string()", s.as_str()));
|
return Some(format!("{:?}.to_string()", s.as_str()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let snip = snippet(cx, format_args.span, "<arg>");
|
let sugg = Sugg::hir(cx, format_args, "<arg>");
|
||||||
if let ExprKind::MethodCall(path, _, _, _) = format_args.kind {
|
if let ExprKind::MethodCall(path, _, _, _) = format_args.kind {
|
||||||
if path.ident.name == sym!(to_string) {
|
if path.ident.name == sym!(to_string) {
|
||||||
return Some(format!("{}", snip));
|
return Some(format!("{}", sugg));
|
||||||
}
|
}
|
||||||
} else if let ExprKind::Binary(..) = format_args.kind {
|
} else if let ExprKind::Binary(..) = format_args.kind {
|
||||||
return Some(format!("{}", snip));
|
return Some(format!("{}", sugg));
|
||||||
}
|
}
|
||||||
return Some(format!("{}.to_string()", snip));
|
return Some(format!("{}.to_string()", sugg.maybe_par()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,7 +137,7 @@ fn on_new_v1<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) -> Option<Strin
|
||||||
if let Some(s_src) = snippet_opt(cx, lit.span) {
|
if let Some(s_src) = snippet_opt(cx, lit.span) {
|
||||||
// Simulate macro expansion, converting {{ and }} to { and }.
|
// Simulate macro expansion, converting {{ and }} to { and }.
|
||||||
let s_expand = s_src.replace("{{", "{").replace("}}", "}");
|
let s_expand = s_src.replace("{{", "{").replace("}}", "}");
|
||||||
return Some(format!("{}.to_string()", s_expand))
|
return Some(format!("{}.to_string()", s_expand));
|
||||||
}
|
}
|
||||||
} else if s.as_str().is_empty() {
|
} else if s.as_str().is_empty() {
|
||||||
return on_argumentv1_new(cx, &tup[0], arms);
|
return on_argumentv1_new(cx, &tup[0], arms);
|
||||||
|
|
|
@ -65,4 +65,8 @@ fn main() {
|
||||||
// False positive
|
// False positive
|
||||||
let a = "foo".to_string();
|
let a = "foo".to_string();
|
||||||
let _ = Some(a + "bar");
|
let _ = Some(a + "bar");
|
||||||
|
|
||||||
|
// Wrap it with braces
|
||||||
|
let v: Vec<String> = vec!["foo".to_string(), "bar".to_string()];
|
||||||
|
let _s: String = (&*v.join("\n")).to_string();
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,4 +67,8 @@ fn main() {
|
||||||
// False positive
|
// False positive
|
||||||
let a = "foo".to_string();
|
let a = "foo".to_string();
|
||||||
let _ = Some(format!("{}", a + "bar"));
|
let _ = Some(format!("{}", a + "bar"));
|
||||||
|
|
||||||
|
// Wrap it with braces
|
||||||
|
let v: Vec<String> = vec!["foo".to_string(), "bar".to_string()];
|
||||||
|
let _s: String = format!("{}", &*v.join("\n"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,5 +87,11 @@ error: useless use of `format!`
|
||||||
LL | let _ = Some(format!("{}", a + "bar"));
|
LL | let _ = Some(format!("{}", a + "bar"));
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `a + "bar"`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `a + "bar"`
|
||||||
|
|
||||||
error: aborting due to 13 previous errors
|
error: useless use of `format!`
|
||||||
|
--> $DIR/format.rs:73:22
|
||||||
|
|
|
||||||
|
LL | let _s: String = format!("{}", &*v.join("/n"));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `(&*v.join("/n")).to_string()`
|
||||||
|
|
||||||
|
error: aborting due to 14 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue