Auto merge of #12976 - tesuji:fix-explicit_auto_deref, r=xFrednet
Fix some false-positive cases of `explicit_auto_deref` changelog: [`explicit_auto_deref`] Fix some false-positive cases Fix part of #9841 Fix #12969 r? xFrednet
This commit is contained in:
commit
0f4035fde3
5 changed files with 116 additions and 12 deletions
|
|
@ -2492,6 +2492,17 @@ pub fn peel_hir_ty_refs<'a>(mut ty: &'a hir::Ty<'a>) -> (&'a hir::Ty<'a>, usize)
|
|||
}
|
||||
}
|
||||
|
||||
/// Peels off all references on the type. Returns the underlying type and the number of references
|
||||
/// removed.
|
||||
pub fn peel_middle_ty_refs(mut ty: Ty<'_>) -> (Ty<'_>, usize) {
|
||||
let mut count = 0;
|
||||
while let rustc_ty::Ref(_, dest_ty, _) = ty.kind() {
|
||||
ty = *dest_ty;
|
||||
count += 1;
|
||||
}
|
||||
(ty, count)
|
||||
}
|
||||
|
||||
/// Removes `AddrOf` operators (`&`) or deref operators (`*`), but only if a reference type is
|
||||
/// dereferenced. An overloaded deref such as `Vec` to slice would not be removed.
|
||||
pub fn peel_ref_operators<'hir>(cx: &LateContext<'_>, mut expr: &'hir Expr<'hir>) -> &'hir Expr<'hir> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue