about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--library/alloc/src/boxed.rs3
-rw-r--r--library/alloc/tests/boxed.rs2
-rw-r--r--src/test/ui/consts/drop_box.rs4
-rw-r--r--src/test/ui/consts/drop_box.stderr11
4 files changed, 17 insertions, 3 deletions
diff --git a/library/alloc/src/boxed.rs b/library/alloc/src/boxed.rs
index 68bf59a01b3..f753189c683 100644
--- a/library/alloc/src/boxed.rs
+++ b/library/alloc/src/boxed.rs
@@ -1170,8 +1170,7 @@ impl<T: ?Sized, A: Allocator> Box<T, A> {
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
-#[rustc_const_unstable(feature = "const_box", issue = "92521")]
-unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> const Drop for Box<T, A> {
+unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Box<T, A> {
     fn drop(&mut self) {
         // FIXME: Do nothing, drop is currently performed by compiler.
     }
diff --git a/library/alloc/tests/boxed.rs b/library/alloc/tests/boxed.rs
index 0d7acfed8c6..9e5123be989 100644
--- a/library/alloc/tests/boxed.rs
+++ b/library/alloc/tests/boxed.rs
@@ -160,7 +160,7 @@ fn const_box() {
         *boxed = 42;
         assert!(*boxed == 42);
 
-        *boxed
+        *Box::leak(boxed)
     };
 
     assert!(VALUE == 42);
diff --git a/src/test/ui/consts/drop_box.rs b/src/test/ui/consts/drop_box.rs
new file mode 100644
index 00000000000..58a373a9673
--- /dev/null
+++ b/src/test/ui/consts/drop_box.rs
@@ -0,0 +1,4 @@
+const fn f<T>(_: Box<T>) {}
+//~^ ERROR destructors cannot be evaluated at compile-time
+
+fn main() {}
diff --git a/src/test/ui/consts/drop_box.stderr b/src/test/ui/consts/drop_box.stderr
new file mode 100644
index 00000000000..b9d6581e8ec
--- /dev/null
+++ b/src/test/ui/consts/drop_box.stderr
@@ -0,0 +1,11 @@
+error[E0493]: destructors cannot be evaluated at compile-time
+  --> $DIR/drop_box.rs:1:15
+   |
+LL | const fn f<T>(_: Box<T>) {}
+   |               ^           - value is dropped here
+   |               |
+   |               constant functions cannot evaluate destructors
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0493`.