]> git.proxmox.com Git - rustc.git/blame - src/test/ui/union/union-manuallydrop-rpass.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / src / test / ui / union / union-manuallydrop-rpass.rs
CommitLineData
e74abb32 1// run-pass
136023e0
XL
2// revisions: mirunsafeck thirunsafeck
3// [thirunsafeck]compile-flags: -Z thir-unsafeck
4
5#![allow(dead_code)]
e74abb32
XL
6
7use std::mem::needs_drop;
8use std::mem::ManuallyDrop;
9
10struct NeedDrop;
11
12impl Drop for NeedDrop {
13 fn drop(&mut self) {}
14}
15
16union UnionOk1<T> {
17 empty: (),
18 value: ManuallyDrop<T>,
19}
20
21union UnionOk2 {
22 value: ManuallyDrop<NeedDrop>,
23}
24
25#[allow(dead_code)]
26union UnionOk3<T: Copy> {
27 empty: (),
28 value: T,
29}
30
31trait Foo { }
32
33trait ImpliesCopy : Copy { }
34
35#[allow(dead_code)]
36union UnionOk4<T: ImpliesCopy> {
37 value: T,
38}
39
40fn main() {
41 // NeedDrop should not make needs_drop true
42 assert!(!needs_drop::<UnionOk1<NeedDrop>>());
43 assert!(!needs_drop::<UnionOk3<&dyn Foo>>());
44}