summaryrefslogtreecommitdiffstats
path: root/src/test/ui/destructuring-assignment/drop-order.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/destructuring-assignment/drop-order.rs')
-rw-r--r--src/test/ui/destructuring-assignment/drop-order.rs43
1 files changed, 0 insertions, 43 deletions
diff --git a/src/test/ui/destructuring-assignment/drop-order.rs b/src/test/ui/destructuring-assignment/drop-order.rs
deleted file mode 100644
index 79671054c..000000000
--- a/src/test/ui/destructuring-assignment/drop-order.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-// run-pass
-
-//! Test that let bindings and destructuring assignments have consistent drop orders
-
-#![allow(unused_variables, unused_assignments)]
-
-use std::cell::RefCell;
-
-thread_local! {
- static DROP_ORDER: RefCell<Vec<usize>> = RefCell::new(Vec::new());
-}
-
-struct DropRecorder(usize);
-impl Drop for DropRecorder {
- fn drop(&mut self) {
- DROP_ORDER.with(|d| d.borrow_mut().push(self.0));
- }
-}
-
-fn main() {
- let expected_drop_order = vec![1, 4, 5, 3, 2];
- // Check the drop order for let bindings:
- {
- let _ = DropRecorder(1);
- let _val = DropRecorder(2);
- let (x, _) = (DropRecorder(3), DropRecorder(4));
- drop(DropRecorder(5));
- }
- DROP_ORDER.with(|d| {
- assert_eq!(&*d.borrow(), &expected_drop_order);
- d.borrow_mut().clear();
- });
- // Check that the drop order for destructuring assignment is the same:
- {
- let _val;
- let x;
- _ = DropRecorder(1);
- _val = DropRecorder(2);
- (x, _) = (DropRecorder(3), DropRecorder(4));
- drop(DropRecorder(5));
- }
- DROP_ORDER.with(|d| assert_eq!(&*d.borrow(), &expected_drop_order));
-}