diff options
Diffstat (limited to 'src/test/ui/union/union-drop-assign.rs')
-rw-r--r-- | src/test/ui/union/union-drop-assign.rs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/test/ui/union/union-drop-assign.rs b/src/test/ui/union/union-drop-assign.rs deleted file mode 100644 index 215666bdd..000000000 --- a/src/test/ui/union/union-drop-assign.rs +++ /dev/null @@ -1,37 +0,0 @@ -// run-pass -#![allow(unused_assignments)] - -// Drop works for union itself. - -use std::mem::ManuallyDrop; - -struct S; - -union U { - a: ManuallyDrop<S> -} - -impl Drop for S { - fn drop(&mut self) { - unsafe { CHECK += 10; } - } -} - -impl Drop for U { - fn drop(&mut self) { - unsafe { CHECK += 1; } - } -} - -static mut CHECK: u8 = 0; - -fn main() { - unsafe { - let mut u = U { a: ManuallyDrop::new(S) }; - assert_eq!(CHECK, 0); - u = U { a: ManuallyDrop::new(S) }; - assert_eq!(CHECK, 1); // union itself is assigned, union is dropped, field is not dropped - *u.a = S; - assert_eq!(CHECK, 11); // union field is assigned, field is dropped - } -} |