summaryrefslogtreecommitdiffstats
path: root/src/test/run-pass-valgrind/cast-enum-with-dtor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/run-pass-valgrind/cast-enum-with-dtor.rs')
-rw-r--r--src/test/run-pass-valgrind/cast-enum-with-dtor.rs34
1 files changed, 0 insertions, 34 deletions
diff --git a/src/test/run-pass-valgrind/cast-enum-with-dtor.rs b/src/test/run-pass-valgrind/cast-enum-with-dtor.rs
deleted file mode 100644
index f7ef92df8..000000000
--- a/src/test/run-pass-valgrind/cast-enum-with-dtor.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-#![allow(dead_code, cenum_impl_drop_cast)]
-
-// check dtor calling order when casting enums.
-
-use std::sync::atomic;
-use std::sync::atomic::Ordering;
-use std::mem;
-
-enum E {
- A = 0,
- B = 1,
- C = 2
-}
-
-static FLAG: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
-
-impl Drop for E {
- fn drop(&mut self) {
- // avoid dtor loop
- unsafe { mem::forget(mem::replace(self, E::B)) };
-
- FLAG.store(FLAG.load(Ordering::SeqCst)+1, Ordering::SeqCst);
- }
-}
-
-fn main() {
- assert_eq!(FLAG.load(Ordering::SeqCst), 0);
- {
- let e = E::C;
- assert_eq!(e as u32, 2);
- assert_eq!(FLAG.load(Ordering::SeqCst), 1);
- }
- assert_eq!(FLAG.load(Ordering::SeqCst), 1);
-}