Auto merge of #13115 - tesuji:rm-dup-peels, r=dswij
Remove duplicated `peel_middle_ty_refs` TODO: Should we move `ty::peel_mid_ty_refs_is_mutable` to super module too? changelog: none
This commit is contained in:
commit
1ea827fa03
7 changed files with 22 additions and 35 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use clippy_utils::diagnostics::span_lint_and_sugg;
|
||||
use clippy_utils::source::snippet_with_context;
|
||||
use clippy_utils::ty::{implements_trait, peel_mid_ty_refs};
|
||||
use clippy_utils::{is_diag_item_method, is_diag_trait_item};
|
||||
use clippy_utils::ty::implements_trait;
|
||||
use clippy_utils::{is_diag_item_method, is_diag_trait_item, peel_middle_ty_refs};
|
||||
use rustc_errors::Applicability;
|
||||
use rustc_hir as hir;
|
||||
use rustc_lint::LateContext;
|
||||
|
|
@ -14,7 +14,7 @@ pub fn check(cx: &LateContext<'_>, method_name: &str, expr: &hir::Expr<'_>, recv
|
|||
&& is_clone_like(cx, method_name, method_def_id)
|
||||
&& let return_type = cx.typeck_results().expr_ty(expr)
|
||||
&& let input_type = cx.typeck_results().expr_ty(recv)
|
||||
&& let (input_type, ref_count) = peel_mid_ty_refs(input_type)
|
||||
&& let (input_type, ref_count) = peel_middle_ty_refs(input_type)
|
||||
&& !(ref_count > 0 && is_diag_trait_item(cx, method_def_id, sym::ToOwned))
|
||||
&& let Some(ty_name) = input_type.ty_adt_def().map(|adt_def| cx.tcx.item_name(adt_def.did()))
|
||||
&& return_type == input_type
|
||||
|
|
|
|||
|
|
@ -3,12 +3,11 @@ use super::unnecessary_iter_cloned::{self, is_into_iter};
|
|||
use clippy_config::msrvs::{self, Msrv};
|
||||
use clippy_utils::diagnostics::{span_lint_and_sugg, span_lint_and_then};
|
||||
use clippy_utils::source::{snippet, snippet_opt};
|
||||
use clippy_utils::ty::{
|
||||
get_iterator_item_ty, implements_trait, is_copy, is_type_diagnostic_item, is_type_lang_item, peel_mid_ty_refs,
|
||||
};
|
||||
use clippy_utils::ty::{get_iterator_item_ty, implements_trait, is_copy, is_type_diagnostic_item, is_type_lang_item};
|
||||
use clippy_utils::visitors::find_all_ret_expressions;
|
||||
use clippy_utils::{
|
||||
fn_def_id, get_parent_expr, is_diag_item_method, is_diag_trait_item, match_def_path, paths, return_ty,
|
||||
fn_def_id, get_parent_expr, is_diag_item_method, is_diag_trait_item, match_def_path, paths, peel_middle_ty_refs,
|
||||
return_ty,
|
||||
};
|
||||
use rustc_errors::Applicability;
|
||||
use rustc_hir::def::{DefKind, Res};
|
||||
|
|
@ -120,8 +119,8 @@ fn check_addr_of_expr(
|
|||
},
|
||||
] = adjustments[..]
|
||||
&& let receiver_ty = cx.typeck_results().expr_ty(receiver)
|
||||
&& let (target_ty, n_target_refs) = peel_mid_ty_refs(*target_ty)
|
||||
&& let (receiver_ty, n_receiver_refs) = peel_mid_ty_refs(receiver_ty)
|
||||
&& let (target_ty, n_target_refs) = peel_middle_ty_refs(*target_ty)
|
||||
&& let (receiver_ty, n_receiver_refs) = peel_middle_ty_refs(receiver_ty)
|
||||
// Only flag cases satisfying at least one of the following three conditions:
|
||||
// * the referent and receiver types are distinct
|
||||
// * the referent/receiver type is a copyable array
|
||||
|
|
@ -382,7 +381,7 @@ fn check_other_call_arg<'tcx>(
|
|||
&& let fn_sig = cx.tcx.fn_sig(callee_def_id).instantiate_identity().skip_binder()
|
||||
&& let Some(i) = recv.into_iter().chain(call_args).position(|arg| arg.hir_id == maybe_arg.hir_id)
|
||||
&& let Some(input) = fn_sig.inputs().get(i)
|
||||
&& let (input, n_refs) = peel_mid_ty_refs(*input)
|
||||
&& let (input, n_refs) = peel_middle_ty_refs(*input)
|
||||
&& let (trait_predicates, _) = get_input_traits_and_projections(cx, callee_def_id, input)
|
||||
&& let Some(sized_def_id) = cx.tcx.lang_items().sized_trait()
|
||||
&& let [trait_predicate] = trait_predicates
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue