//@ run-pass static mut DROP_RAN: bool = false; trait Bar { fn do_something(&mut self); //~ WARN method `do_something` is never used } struct BarImpl; impl Bar for BarImpl { fn do_something(&mut self) {} } struct Foo(#[allow(dead_code)] B); impl Drop for Foo { fn drop(&mut self) { unsafe { DROP_RAN = true; } } } fn main() { { let _x: Foo = Foo(BarImpl); } unsafe { assert_eq!(DROP_RAN, true); } }