// error-pattern:drop 1 | |
// ignore-cloudabi no std::process | |
/// Structure which will not allow to be dropped twice. | |
struct Droppable<'a>(&'a mut bool, u32); | |
impl<'a> Drop for Droppable<'a> { | |
fn drop(&mut self) { | |
if *self.0 { | |
eprintln!("{} dropped twice", self.1); | |
::std::process::exit(1); | |
} | |
eprintln!("drop {}", self.1); | |
*self.0 = true; | |
} | |
} | |
fn mir<'a>(d: Droppable<'a>) { | |
loop { | |
let x = d; | |
break; | |
} | |
} | |
fn main() { | |
let mut xv = false; | |
mir(Droppable(&mut xv, 1)); | |
panic!(); | |
} |