about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOli Scherer <github333195615777966@oli-obk.de>2025-04-29 10:15:19 +0000
committerOli Scherer <github333195615777966@oli-obk.de>2025-04-29 10:28:10 +0000
commit923ca85a18e576ac0b132e6adf41541285f55ccc (patch)
treeb9c6f8016a86e67e153a102f7f60ea88d9eb3d76
parent1b8ab72680f36e783af84c1a3c4f8508572bd9f9 (diff)
downloadrust-923ca85a18e576ac0b132e6adf41541285f55ccc.tar.gz
rust-923ca85a18e576ac0b132e6adf41541285f55ccc.zip
Add test
-rw-r--r--tests/ui/traits/const-traits/drop-manually-drop-no-drop-impl.rs17
-rw-r--r--tests/ui/traits/const-traits/drop-manually-drop.new.stderr11
-rw-r--r--tests/ui/traits/const-traits/drop-manually-drop.old.stderr11
-rw-r--r--tests/ui/traits/const-traits/drop-manually-drop.rs24
4 files changed, 63 insertions, 0 deletions
diff --git a/tests/ui/traits/const-traits/drop-manually-drop-no-drop-impl.rs b/tests/ui/traits/const-traits/drop-manually-drop-no-drop-impl.rs
new file mode 100644
index 00000000000..060a543d6c3
--- /dev/null
+++ b/tests/ui/traits/const-traits/drop-manually-drop-no-drop-impl.rs
@@ -0,0 +1,17 @@
+//@[new] compile-flags: -Znext-solver
+//@ revisions: old new
+//@ check-pass
+
+use std::mem::ManuallyDrop;
+
+struct Moose;
+
+impl Drop for Moose {
+    fn drop(&mut self) {}
+}
+
+struct ConstDropper<T>(ManuallyDrop<T>);
+
+const fn foo(_var: ConstDropper<Moose>) {}
+
+fn main() {}
diff --git a/tests/ui/traits/const-traits/drop-manually-drop.new.stderr b/tests/ui/traits/const-traits/drop-manually-drop.new.stderr
new file mode 100644
index 00000000000..ab152f73897
--- /dev/null
+++ b/tests/ui/traits/const-traits/drop-manually-drop.new.stderr
@@ -0,0 +1,11 @@
+error[E0493]: destructor of `ConstDropper<Moose>` cannot be evaluated at compile-time
+  --> $DIR/drop-manually-drop.rs:21:14
+   |
+LL | const fn foo(_var: ConstDropper<Moose>) {}
+   |              ^^^^                        - value is dropped here
+   |              |
+   |              the destructor for this type cannot be evaluated in constant functions
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0493`.
diff --git a/tests/ui/traits/const-traits/drop-manually-drop.old.stderr b/tests/ui/traits/const-traits/drop-manually-drop.old.stderr
new file mode 100644
index 00000000000..ab152f73897
--- /dev/null
+++ b/tests/ui/traits/const-traits/drop-manually-drop.old.stderr
@@ -0,0 +1,11 @@
+error[E0493]: destructor of `ConstDropper<Moose>` cannot be evaluated at compile-time
+  --> $DIR/drop-manually-drop.rs:21:14
+   |
+LL | const fn foo(_var: ConstDropper<Moose>) {}
+   |              ^^^^                        - value is dropped here
+   |              |
+   |              the destructor for this type cannot be evaluated in constant functions
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0493`.
diff --git a/tests/ui/traits/const-traits/drop-manually-drop.rs b/tests/ui/traits/const-traits/drop-manually-drop.rs
new file mode 100644
index 00000000000..9dd3c1e2281
--- /dev/null
+++ b/tests/ui/traits/const-traits/drop-manually-drop.rs
@@ -0,0 +1,24 @@
+//@[new] compile-flags: -Znext-solver
+//@ revisions: old new
+
+#![feature(const_destruct)]
+#![feature(const_trait_impl)]
+
+use std::mem::ManuallyDrop;
+
+struct Moose;
+
+impl Drop for Moose {
+    fn drop(&mut self) {}
+}
+
+struct ConstDropper<T>(ManuallyDrop<T>);
+
+impl<T> const Drop for ConstDropper<T> {
+    fn drop(&mut self) {}
+}
+
+const fn foo(_var: ConstDropper<Moose>) {}
+//~^ ERROR destructor of `ConstDropper<Moose>` cannot be evaluated at compile-time
+
+fn main() {}