]> git.lizzy.rs Git - rust.git/blobdiff - clippy_lints/src/eta_reduction.rs
Auto merge of #3985 - phansch:move_some_cast_tests, r=flip1995
[rust.git] / clippy_lints / src / eta_reduction.rs
index 425f1e67147725966b0777b4eac80df95bf32525..63abe47b442806905bbe548ee537b5fb4b20a8a5 100644 (file)
@@ -2,13 +2,11 @@
 use rustc::hir::*;
 use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
 use rustc::ty::{self, Ty};
-use rustc::{declare_tool_lint, lint_array};
+use rustc::{declare_lint_pass, declare_tool_lint};
 use rustc_errors::Applicability;
 
 use crate::utils::{is_adjusted, iter_input_pats, snippet_opt, span_lint_and_then, type_is_unsafe_function};
 
-pub struct EtaPass;
-
 declare_clippy_lint! {
     /// **What it does:** Checks for closures which just call another function where
     /// the function can be called directly. `unsafe` functions or calls where types
     "redundant closures, i.e., `|a| foo(a)` (which can be written as just `foo`)"
 }
 
-impl LintPass for EtaPass {
-    fn get_lints(&self) -> LintArray {
-        lint_array!(REDUNDANT_CLOSURE)
-    }
-
-    fn name(&self) -> &'static str {
-        "EtaReduction"
-    }
-}
+declare_lint_pass!(EtaReduction => [REDUNDANT_CLOSURE]);
 
-impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EtaPass {
+impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EtaReduction {
     fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) {
         if in_external_macro(cx.sess(), expr.span) {
             return;
@@ -102,7 +92,7 @@ fn check_closure(cx: &LateContext<'_, '_>, expr: &Expr) {
             // Are the expression or the arguments type-adjusted? Then we need the closure
             if !(is_adjusted(cx, ex) || args.iter().skip(1).any(|arg| is_adjusted(cx, arg)));
 
-            let method_def_id = cx.tables.type_dependent_defs()[ex.hir_id].def_id();
+            let method_def_id = cx.tables.type_dependent_def_id(ex.hir_id).unwrap();
             if !type_is_unsafe_function(cx, cx.tcx.type_of(method_def_id));
 
             if compare_inputs(&mut iter_input_pats(decl, body), &mut args.into_iter());