]> git.lizzy.rs Git - rust.git/commitdiff
Remove fix for rustc bug from `needless_borrow`
authorJason Newcomb <jsnewcomb@pm.me>
Sun, 18 Apr 2021 00:46:13 +0000 (20:46 -0400)
committerJason Newcomb <jsnewcomb@pm.me>
Thu, 20 May 2021 13:03:31 +0000 (09:03 -0400)
The spans given for derived traits used to not indicate they were from a macro expansion.

clippy_lints/src/lib.rs
clippy_lints/src/needless_borrow.rs

index d1c129eba82bc48abb6fc02ebeb6278428400d01..5cd7d5f14e35a8a425a1188205ca87e2d10aad24 100644 (file)
@@ -1890,7 +1890,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
     store.register_late_pass(|| box zero_div_zero::ZeroDiv);
     store.register_late_pass(|| box mutex_atomic::Mutex);
     store.register_late_pass(|| box needless_update::NeedlessUpdate);
-    store.register_late_pass(|| box needless_borrow::NeedlessBorrow::default());
+    store.register_late_pass(|| box needless_borrow::NeedlessBorrow);
     store.register_late_pass(|| box needless_borrowed_ref::NeedlessBorrowedRef);
     store.register_late_pass(|| box no_effect::NoEffect);
     store.register_late_pass(|| box temporary_assignment::TemporaryAssignment);
index eef3c16730b133baea1e05f498728e7b3a7bb1ac..3adbbfb8e89647b0ef43062f5ef37b9ef38ce03f 100644 (file)
@@ -3,16 +3,14 @@
 //! This lint is **warn** by default
 
 use clippy_utils::diagnostics::span_lint_and_then;
-use clippy_utils::is_automatically_derived;
 use clippy_utils::source::snippet_opt;
 use if_chain::if_chain;
 use rustc_errors::Applicability;
-use rustc_hir::{BindingAnnotation, BorrowKind, Expr, ExprKind, Item, Mutability, Pat, PatKind};
+use rustc_hir::{BindingAnnotation, BorrowKind, Expr, ExprKind, Mutability, Pat, PatKind};
 use rustc_lint::{LateContext, LateLintPass};
 use rustc_middle::ty;
 use rustc_middle::ty::adjustment::{Adjust, Adjustment};
 use rustc_session::{declare_tool_lint, impl_lint_pass};
-use rustc_span::def_id::LocalDefId;
 
 declare_clippy_lint! {
     /// **What it does:** Checks for address of operations (`&`) that are going to
 }
 
 #[derive(Default)]
-pub struct NeedlessBorrow {
-    derived_item: Option<LocalDefId>,
-}
+pub struct NeedlessBorrow;
 
 impl_lint_pass!(NeedlessBorrow => [NEEDLESS_BORROW]);
 
 impl<'tcx> LateLintPass<'tcx> for NeedlessBorrow {
     fn check_expr(&mut self, cx: &LateContext<'tcx>, e: &'tcx Expr<'_>) {
-        if e.span.from_expansion() || self.derived_item.is_some() {
+        if e.span.from_expansion() {
             return;
         }
         if let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner) = e.kind {
@@ -86,7 +82,7 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, e: &'tcx Expr<'_>) {
         }
     }
     fn check_pat(&mut self, cx: &LateContext<'tcx>, pat: &'tcx Pat<'_>) {
-        if pat.span.from_expansion() || self.derived_item.is_some() {
+        if pat.span.from_expansion() {
             return;
         }
         if_chain! {
@@ -116,20 +112,4 @@ fn check_pat(&mut self, cx: &LateContext<'tcx>, pat: &'tcx Pat<'_>) {
             }
         }
     }
-
-    fn check_item(&mut self, cx: &LateContext<'tcx>, item: &'tcx Item<'_>) {
-        let attrs = cx.tcx.hir().attrs(item.hir_id());
-        if is_automatically_derived(attrs) {
-            debug_assert!(self.derived_item.is_none());
-            self.derived_item = Some(item.def_id);
-        }
-    }
-
-    fn check_item_post(&mut self, _: &LateContext<'tcx>, item: &'tcx Item<'_>) {
-        if let Some(id) = self.derived_item {
-            if item.def_id == id {
-                self.derived_item = None;
-            }
-        }
-    }
 }