summaryrefslogtreecommitdiffstats
path: root/src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs')
-rw-r--r--src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs41
1 files changed, 0 insertions, 41 deletions
diff --git a/src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs b/src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs
deleted file mode 100644
index 61d11cf38..000000000
--- a/src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// run-pass
-
-// Demonstrate the use of the unguarded escape hatch with a trait bound
-// to assert that destructor will not access any dead data.
-//
-// Compare with ui/span/issue28498-reject-trait-bound.rs
-
-#![feature(dropck_eyepatch)]
-
-use std::fmt;
-
-#[derive(Debug)]
-struct ScribbleOnDrop(String);
-
-impl Drop for ScribbleOnDrop {
- fn drop(&mut self) {
- self.0 = format!("DROPPED");
- }
-}
-
-struct Foo<T: fmt::Debug>(u32, T);
-
-unsafe impl<#[may_dangle] T: fmt::Debug> Drop for Foo<T> {
- fn drop(&mut self) {
- // Use of `may_dangle` is sound, because destructor never accesses
- // the `Debug::fmt` method of `T`, despite having it available.
- println!("Dropping Foo({}, _)", self.0);
- }
-}
-
-fn main() {
- let (last_dropped, foo0);
- let (foo1, first_dropped);
-
- last_dropped = ScribbleOnDrop(format!("last"));
- first_dropped = ScribbleOnDrop(format!("first"));
- foo0 = Foo(0, &last_dropped);
- foo1 = Foo(1, &first_dropped);
-
- println!("foo0.1: {:?} foo1.1: {:?}", foo0.1, foo1.1);
-}