Skip to content

Commit d380769

Browse files
committed
extract conditions for from_iter_instead_of_collect into its own module
1 parent 62490c4 commit d380769

File tree

5 files changed

+14
-18
lines changed

5 files changed

+14
-18
lines changed

clippy_lints/src/methods/chars_cmp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use crate::utils::{method_chain_args, single_segment_path};
21
use clippy_utils::diagnostics::span_lint_and_sugg;
32
use clippy_utils::source::snippet_with_applicability;
3+
use clippy_utils::{method_chain_args, single_segment_path};
44
use if_chain::if_chain;
55
use rustc_errors::Applicability;
66
use rustc_hir as hir;

clippy_lints/src/methods/chars_cmp_with_unwrap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::utils::method_chain_args;
21
use clippy_utils::diagnostics::span_lint_and_sugg;
2+
use clippy_utils::method_chain_args;
33
use clippy_utils::source::snippet_with_applicability;
44
use if_chain::if_chain;
55
use rustc_ast::ast;

clippy_lints/src/methods/from_iter_instead_of_collect.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::ty::implements_trait;
3-
use clippy_utils::{get_trait_def_id, paths, sugg};
3+
use clippy_utils::{get_trait_def_id, match_qpath, paths, sugg};
44
use if_chain::if_chain;
55
use rustc_errors::Applicability;
66
use rustc_hir as hir;
7+
use rustc_hir::ExprKind;
78
use rustc_lint::{LateContext, LintContext};
89
use rustc_middle::ty::Ty;
910
use rustc_span::sym;
1011

1112
use super::FROM_ITER_INSTEAD_OF_COLLECT;
1213

13-
pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, args: &[hir::Expr<'_>]) {
14-
let ty = cx.typeck_results().expr_ty(expr);
15-
let arg_ty = cx.typeck_results().expr_ty(&args[0]);
16-
14+
pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, args: &[hir::Expr<'_>], func_kind: &ExprKind<'_>) {
1715
if_chain! {
16+
if let hir::ExprKind::Path(path) = func_kind;
17+
if match_qpath(path, &["from_iter"]);
18+
let ty = cx.typeck_results().expr_ty(expr);
19+
let arg_ty = cx.typeck_results().expr_ty(&args[0]);
1820
if let Some(from_iter_id) = get_trait_def_id(cx, &paths::FROM_ITERATOR);
1921
if let Some(iter_id) = cx.tcx.get_diagnostic_item(sym::Iterator);
2022

clippy_lints/src/methods/mod.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ use clippy_utils::diagnostics::{span_lint, span_lint_and_help};
6363
use clippy_utils::source::snippet_with_applicability;
6464
use clippy_utils::ty::{contains_ty, implements_trait, is_copy, is_type_diagnostic_item};
6565
use clippy_utils::{
66-
contains_return, get_trait_def_id, in_macro, iter_input_pats, match_def_path, match_qpath, method_calls,
67-
method_chain_args, paths, return_ty, single_segment_path, SpanlessEq,
66+
contains_return, get_trait_def_id, in_macro, iter_input_pats, match_qpath, method_calls, paths, return_ty,
67+
SpanlessEq,
6868
};
6969
use if_chain::if_chain;
7070
use rustc_ast::ast;
@@ -1777,22 +1777,17 @@ impl<'tcx> LateLintPass<'tcx> for Methods {
17771777

17781778
match expr.kind {
17791779
hir::ExprKind::Call(ref func, ref args) => {
1780-
if let hir::ExprKind::Path(path) = &func.kind {
1781-
if match_qpath(path, &["from_iter"]) {
1782-
from_iter_instead_of_collect::check(cx, expr, args);
1783-
}
1784-
}
1780+
from_iter_instead_of_collect::check(cx, expr, args, &func.kind);
17851781
},
17861782
hir::ExprKind::MethodCall(ref method_call, ref method_span, ref args, _) => {
17871783
or_fun_call::check(cx, expr, *method_span, &method_call.ident.as_str(), args);
17881784
expect_fun_call::check(cx, expr, *method_span, &method_call.ident.as_str(), args);
17891785
clone_on_copy::check(cx, expr, method_call.ident.name, args);
17901786
clone_on_ref_ptr::check(cx, expr, method_call.ident.name, args);
1791-
1792-
let self_ty = cx.typeck_results().expr_ty_adjusted(&args[0]);
17931787
inefficient_to_string::check(cx, expr, method_call.ident.name, args);
17941788
single_char_add_str::check(cx, expr, args);
17951789

1790+
let self_ty = cx.typeck_results().expr_ty_adjusted(&args[0]);
17961791
match self_ty.kind() {
17971792
ty::Ref(_, ty, _) if *ty.kind() == ty::Str => {
17981793
for &(method, pos) in &PATTERN_METHODS {

clippy_lints/src/methods/single_char_add_str.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::methods::{single_char_insert_string, single_char_push_string};
2-
use crate::utils::match_def_path;
3-
use crate::utils::paths;
2+
use clippy_utils::{match_def_path, paths};
43
use rustc_hir as hir;
54
use rustc_lint::LateContext;
65

0 commit comments

Comments
 (0)