-use rustc::impl_lint_pass;
-use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
-use rustc::ty::layout::LayoutOf;
-use rustc::ty::{self, Ty};
-use rustc_hir::intravisit as visit;
-use rustc_hir::HirIdSet;
-use rustc_hir::{self, *};
-use rustc_session::declare_tool_lint;
+use clippy_utils::diagnostics::span_lint;
+use clippy_utils::ty::contains_ty;
+use rustc_hir::intravisit;
+use rustc_hir::{self, AssocItemKind, Body, FnDecl, HirId, HirIdSet, Impl, ItemKind, Node};
+use rustc_infer::infer::TyCtxtInferExt;
+use rustc_lint::{LateContext, LateLintPass};
+use rustc_middle::mir::FakeReadCause;
+use rustc_middle::ty::{self, TraitRef, Ty};
+use rustc_session::{declare_tool_lint, impl_lint_pass};