]> git.lizzy.rs Git - rust.git/blob - src/test/run-fail/mir_dynamic_drops_1.rs
Auto merge of #63994 - Centril:refactor-qualify-consts, r=spastorino,oli-obk
[rust.git] / src / test / run-fail / mir_dynamic_drops_1.rs
1 // error-pattern:drop 1
2 // error-pattern:drop 2
3 // ignore-cloudabi no std::process
4
5 /// Structure which will not allow to be dropped twice.
6 struct Droppable<'a>(&'a mut bool, u32);
7 impl<'a> Drop for Droppable<'a> {
8     fn drop(&mut self) {
9         if *self.0 {
10             eprintln!("{} dropped twice", self.1);
11             ::std::process::exit(1);
12         }
13         eprintln!("drop {}", self.1);
14         *self.0 = true;
15     }
16 }
17
18 fn mir() {
19     let (mut xv, mut yv) = (false, false);
20     let x = Droppable(&mut xv, 1);
21     let y = Droppable(&mut yv, 2);
22     let mut z = x;
23     let k = y;
24     z = k;
25 }
26
27 fn main() {
28     mir();
29     panic!();
30 }