// skip-filecheck // EMIT_MIR_FOR_EACH_PANIC_STRATEGY // EMIT_MIR tail_expr_drop_order_unwind.method_1.ElaborateDrops.after.mir #![deny(tail_expr_drop_order)] use std::backtrace::Backtrace; #[derive(Clone)] struct Guard; impl Drop for Guard { fn drop(&mut self) { println!("Drop!"); } } #[derive(Clone)] struct OtherDrop; impl Drop for OtherDrop { fn drop(&mut self) { println!("Drop!"); } } fn method_1(g: Guard) { match method_2(&g.clone()) { Ok(other_drop) => { // repro needs something else being dropped too. } Err(err) => {} } } fn method_2(_: &Guard) -> Result { panic!("Method 2 panics!"); }