// run-pass | |
#![allow(unused_variables)] | |
static mut DROP: bool = false; | |
struct ConnWrap(Conn); | |
impl ::std::ops::Deref for ConnWrap { | |
type Target=Conn; | |
fn deref(&self) -> &Conn { &self.0 } | |
} | |
struct Conn; | |
impl Drop for Conn { | |
fn drop(&mut self) { unsafe { DROP = true; } } | |
} | |
fn inner() { | |
let conn = &*match Some(ConnWrap(Conn)) { | |
Some(val) => val, | |
None => return, | |
}; | |
return; | |
} | |
fn main() { | |
inner(); | |
unsafe { | |
assert_eq!(DROP, true); | |
} | |
} |