2 // revisions: mirunsafeck thirunsafeck
3 // [thirunsafeck]compile-flags: -Z thir-unsafeck
7 use std::mem::needs_drop;
8 use std::mem::ManuallyDrop;
12 impl Drop for NeedDrop {
18 value: ManuallyDrop<T>,
22 value: ManuallyDrop<NeedDrop>,
26 union UnionOk3<T: Copy> {
33 trait ImpliesCopy : Copy { }
36 union UnionOk4<T: ImpliesCopy> {
41 // NeedDrop should not make needs_drop true
42 assert!(!needs_drop::<UnionOk1<NeedDrop>>());
43 assert!(!needs_drop::<UnionOk3<&dyn Foo>>());