mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-14 17:07:17 +00:00
Refactoring: use inner function
This commit is contained in:
parent
3d30ef7818
commit
619ca76731
1 changed files with 21 additions and 48 deletions
|
@ -1150,8 +1150,6 @@ fn detect_same_item_push<'tcx>(
|
||||||
{
|
{
|
||||||
// Make sure that the push does not involve possibly mutating values
|
// Make sure that the push does not involve possibly mutating values
|
||||||
if let PatKind::Wild = pat.kind {
|
if let PatKind::Wild = pat.kind {
|
||||||
let vec_str = snippet_with_macro_callsite(cx, vec.span, "");
|
|
||||||
let item_str = snippet_with_macro_callsite(cx, pushed_item.span, "");
|
|
||||||
if let ExprKind::Path(ref qpath) = pushed_item.kind {
|
if let ExprKind::Path(ref qpath) = pushed_item.kind {
|
||||||
match qpath_res(cx, qpath, pushed_item.hir_id) {
|
match qpath_res(cx, qpath, pushed_item.hir_id) {
|
||||||
// immutable bindings that are initialized with literal or constant
|
// immutable bindings that are initialized with literal or constant
|
||||||
|
@ -1167,33 +1165,11 @@ fn detect_same_item_push<'tcx>(
|
||||||
then {
|
then {
|
||||||
match init.kind {
|
match init.kind {
|
||||||
// immutable bindings that are initialized with literal
|
// immutable bindings that are initialized with literal
|
||||||
ExprKind::Lit(..) => {
|
ExprKind::Lit(..) => emit_lint(cx, vec, pushed_item),
|
||||||
span_lint_and_help(
|
|
||||||
cx,
|
|
||||||
SAME_ITEM_PUSH,
|
|
||||||
vec.span,
|
|
||||||
"it looks like the same item is being pushed into this Vec",
|
|
||||||
None,
|
|
||||||
&format!(
|
|
||||||
"try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
|
|
||||||
item_str, vec_str, item_str
|
|
||||||
),
|
|
||||||
)
|
|
||||||
},
|
|
||||||
// immutable bindings that are initialized with constant
|
// immutable bindings that are initialized with constant
|
||||||
ExprKind::Path(ref path) => {
|
ExprKind::Path(ref path) => {
|
||||||
if let Res::Def(DefKind::Const, ..) = qpath_res(cx, path, init.hir_id) {
|
if let Res::Def(DefKind::Const, ..) = qpath_res(cx, path, init.hir_id) {
|
||||||
span_lint_and_help(
|
emit_lint(cx, vec, pushed_item);
|
||||||
cx,
|
|
||||||
SAME_ITEM_PUSH,
|
|
||||||
vec.span,
|
|
||||||
"it looks like the same item is being pushed into this Vec",
|
|
||||||
None,
|
|
||||||
&format!(
|
|
||||||
"try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
|
|
||||||
item_str, vec_str, item_str
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {},
|
_ => {},
|
||||||
|
@ -1202,37 +1178,34 @@ fn detect_same_item_push<'tcx>(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// constant
|
// constant
|
||||||
Res::Def(DefKind::Const, ..) => span_lint_and_help(
|
Res::Def(DefKind::Const, ..) => emit_lint(cx, vec, pushed_item),
|
||||||
cx,
|
|
||||||
SAME_ITEM_PUSH,
|
|
||||||
vec.span,
|
|
||||||
"it looks like the same item is being pushed into this Vec",
|
|
||||||
None,
|
|
||||||
&format!(
|
|
||||||
"try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
|
|
||||||
item_str, vec_str, item_str
|
|
||||||
),
|
|
||||||
),
|
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
} else if let ExprKind::Lit(..) = pushed_item.kind {
|
} else if let ExprKind::Lit(..) = pushed_item.kind {
|
||||||
// literal
|
// literal
|
||||||
span_lint_and_help(
|
emit_lint(cx, vec, pushed_item);
|
||||||
cx,
|
|
||||||
SAME_ITEM_PUSH,
|
|
||||||
vec.span,
|
|
||||||
"it looks like the same item is being pushed into this Vec",
|
|
||||||
None,
|
|
||||||
&format!(
|
|
||||||
"try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
|
|
||||||
item_str, vec_str, item_str
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn emit_lint(cx: &LateContext<'_>, vec: &Expr<'_>, pushed_item: &Expr<'_>) {
|
||||||
|
let vec_str = snippet_with_macro_callsite(cx, vec.span, "");
|
||||||
|
let item_str = snippet_with_macro_callsite(cx, pushed_item.span, "");
|
||||||
|
|
||||||
|
span_lint_and_help(
|
||||||
|
cx,
|
||||||
|
SAME_ITEM_PUSH,
|
||||||
|
vec.span,
|
||||||
|
"it looks like the same item is being pushed into this Vec",
|
||||||
|
None,
|
||||||
|
&format!(
|
||||||
|
"try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
|
||||||
|
item_str, vec_str, item_str
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks for looping over a range and then indexing a sequence with it.
|
/// Checks for looping over a range and then indexing a sequence with it.
|
||||||
|
|
Loading…
Reference in a new issue