diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs index 71e9197e4f5..d73fcc28c13 100644 --- a/compiler/rustc_middle/src/ty/util.rs +++ b/compiler/rustc_middle/src/ty/util.rs @@ -1054,7 +1054,8 @@ pub fn trivial_const_drop<'tcx>(ty: Ty<'tcx>) -> bool { | ty::RawPtr(_) | ty::Ref(..) | ty::FnDef(..) - | ty::FnPtr(_) => true, + | ty::FnPtr(_) + | ty::Never => true, ty::Opaque(..) | ty::Dynamic(..) @@ -1062,7 +1063,6 @@ pub fn trivial_const_drop<'tcx>(ty: Ty<'tcx>) -> bool { | ty::Bound(..) | ty::Param(_) | ty::Placeholder(_) - | ty::Never | ty::Foreign(_) | ty::Projection(_) | ty::Infer(_) => false, diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop.rs b/src/test/ui/rfc-2632-const-trait-impl/const-drop.rs index d244f75ed36..7d610e5277d 100644 --- a/src/test/ui/rfc-2632-const-trait-impl/const-drop.rs +++ b/src/test/ui/rfc-2632-const-trait-impl/const-drop.rs @@ -3,6 +3,7 @@ #![feature(const_trait_impl)] #![feature(const_fn_trait_bound)] #![feature(const_mut_refs)] +#![feature(never_type)] #![cfg_attr(precise, feature(const_precise_live_drops))] struct S<'a>(&'a mut u8); @@ -77,6 +78,7 @@ implements_const_drop! { &1, &1 as *const i32, ConstDropWithBound::<()>, + Result::::Ok(1), } fn main() {