diff --git a/clippy_lints/src/non_copy_const.rs b/clippy_lints/src/non_copy_const.rs index 46e26b326971..198ff8ae4926 100644 --- a/clippy_lints/src/non_copy_const.rs +++ b/clippy_lints/src/non_copy_const.rs @@ -5,7 +5,7 @@ use std::ptr; use rustc::ty::adjustment::Adjust; -use rustc::ty::{Ty, TypeFlags}; +use rustc::ty::{Ty, TypeFoldable}; use rustc_hir::def::{DefKind, Res}; use rustc_hir::{Expr, ExprKind, ImplItem, ImplItemKind, Item, ItemKind, Node, TraitItem, TraitItemKind, UnOp}; use rustc_lint::{LateContext, LateLintPass, Lint}; @@ -128,7 +128,7 @@ fn verify_ty_bound<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, ty: Ty<'tcx>, source: S db.span_label(const_kw_span, "make this a static item (maybe with lazy_static)"); }, Source::Assoc { ty: ty_span, .. } => { - if ty.flags.contains(TypeFlags::HAS_FREE_LOCAL_NAMES) { + if !ty.has_infer_types_or_consts() { db.span_label(ty_span, &format!("consider requiring `{}` to be `Copy`", ty)); } }, diff --git a/tests/ui/declare_interior_mutable_const.stderr b/tests/ui/declare_interior_mutable_const.stderr index 6a9a57361f9f..910a28d49e8a 100644 --- a/tests/ui/declare_interior_mutable_const.stderr +++ b/tests/ui/declare_interior_mutable_const.stderr @@ -39,7 +39,9 @@ error: a `const` item should never be interior mutable --> $DIR/declare_interior_mutable_const.rs:40:5 | LL | const ATOMIC: AtomicUsize; //~ ERROR interior mutable - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^-----------^ + | | + | consider requiring `std::sync::atomic::AtomicUsize` to be `Copy` error: a `const` item should never be interior mutable --> $DIR/declare_interior_mutable_const.rs:44:5 @@ -88,7 +90,9 @@ error: a `const` item should never be interior mutable --> $DIR/declare_interior_mutable_const.rs:81:5 | LL | const ASSOC_3: AtomicUsize = AtomicUsize::new(14); //~ ERROR interior mutable - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^-----------^^^^^^^^^^^^^^^^^^^^^^^^ + | | + | consider requiring `std::sync::atomic::AtomicUsize` to be `Copy` error: a `const` item should never be interior mutable --> $DIR/declare_interior_mutable_const.rs:84:5