Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit f6f5180

Browse files
committed
Add a simple test case
1 parent 9125fbf commit f6f5180

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#![feature(const_trait_impl)]
2+
#![feature(const_fn_trait_bound)]
3+
#![feature(const_mut_refs)]
4+
#![feature(const_panic)]
5+
6+
struct S;
7+
8+
impl const Drop for S {
9+
fn drop(&mut self) {
10+
// NB: There is no way to tell that a const destructor is ran,
11+
// because even if we can operate on mutable variables, it will
12+
// not be reflected because everything is `const`. So we panic
13+
// here, attempting to make the CTFE engine error.
14+
panic!("much const drop")
15+
//~^ ERROR evaluation of constant value failed
16+
}
17+
}
18+
19+
const fn a<T: ~const Drop>(_: T) {}
20+
21+
const _: () = a(S);
22+
23+
fn main() {}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
error[E0080]: evaluation of constant value failed
2+
--> $DIR/const-drop.rs:14:9
3+
|
4+
LL | panic!("much const drop")
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^
6+
| |
7+
| the evaluated program panicked at 'much const drop', $DIR/const-drop.rs:14:9
8+
| inside `<S as Drop>::drop` at $SRC_DIR/std/src/panic.rs:LL:COL
9+
...
10+
LL | const fn a<T: ~const Drop>(_: T) {}
11+
| - inside `a::<S>` at $DIR/const-drop.rs:19:35
12+
LL |
13+
LL | const _: () = a(S);
14+
| ---- inside `_` at $DIR/const-drop.rs:21:15
15+
|
16+
::: $SRC_DIR/core/src/ptr/mod.rs:LL:COL
17+
|
18+
LL | pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
19+
| ------------------------------------------------------- inside `std::ptr::drop_in_place::<S> - shim(Some(S))` at $SRC_DIR/core/src/ptr/mod.rs:LL:COL
20+
|
21+
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
22+
23+
error: aborting due to previous error
24+
25+
For more information about this error, try `rustc --explain E0080`.

0 commit comments

Comments
 (0)