mirror of https://github.com/rust-lang/rust.git
34 lines
693 B
Rust
34 lines
693 B
Rust
//@ edition: 2021
|
|
//@ check-pass
|
|
|
|
#![deny(if_let_rescope)]
|
|
|
|
struct Drop;
|
|
impl std::ops::Drop for Drop {
|
|
fn drop(&mut self) {
|
|
println!("drop")
|
|
}
|
|
}
|
|
|
|
impl Drop {
|
|
fn as_ref(&self) -> Option<i32> {
|
|
Some(1)
|
|
}
|
|
}
|
|
|
|
fn consume(_: impl Sized) -> Option<i32> { Some(1) }
|
|
|
|
fn main() {
|
|
let drop = Drop;
|
|
|
|
// Make sure we don't drop if we don't actually make a temporary.
|
|
if let None = drop.as_ref() {} else {}
|
|
|
|
// Make sure we don't lint if we consume the droppy value.
|
|
if let None = consume(Drop) {} else {}
|
|
|
|
// Make sure we don't lint on field exprs of place exprs.
|
|
let tup_place = (Drop, ());
|
|
if let None = consume(tup_place.1) {} else {}
|
|
}
|