summaryrefslogtreecommitdiffstats
path: root/src/test/ui/union/union-drop.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/union/union-drop.rs')
-rw-r--r--src/test/ui/union/union-drop.rs60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/test/ui/union/union-drop.rs b/src/test/ui/union/union-drop.rs
deleted file mode 100644
index c3d7d41ca..000000000
--- a/src/test/ui/union/union-drop.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-// run-pass
-// revisions: mirunsafeck thirunsafeck
-// [thirunsafeck]compile-flags: -Z thir-unsafeck
-
-#![allow(dead_code)]
-#![allow(unused_variables)]
-
-// Drop works for union itself.
-
-#[derive(Copy, Clone)]
-struct S;
-
-union U {
- a: u8
-}
-
-union W {
- a: S,
-}
-
-union Y {
- a: S,
-}
-
-impl Drop for U {
- fn drop(&mut self) {
- unsafe { CHECK += 1; }
- }
-}
-
-impl Drop for W {
- fn drop(&mut self) {
- unsafe { CHECK += 1; }
- }
-}
-
-static mut CHECK: u8 = 0;
-
-fn main() {
- unsafe {
- assert_eq!(CHECK, 0);
- {
- let u = U { a: 1 };
- }
- assert_eq!(CHECK, 1); // 1, dtor of U is called
- {
- let w = W { a: S };
- }
- assert_eq!(CHECK, 2); // 2, dtor of W is called
- {
- let y = Y { a: S };
- }
- assert_eq!(CHECK, 2); // 2, Y has no dtor
- {
- let u2 = U { a: 1 };
- std::mem::forget(u2);
- }
- assert_eq!(CHECK, 2); // 2, dtor of U *not* called for u2
- }
-}