2021-08-31 15:18:10 -05:00
|
|
|
// run-rustfix
|
|
|
|
// edition:2018
|
|
|
|
// check-pass
|
|
|
|
#![warn(rust_2021_compatibility)]
|
|
|
|
|
2021-09-21 03:05:11 -05:00
|
|
|
#[derive(Debug)]
|
|
|
|
struct Foo(i32);
|
|
|
|
impl Drop for Foo {
|
|
|
|
fn drop(&mut self) {
|
|
|
|
println!("{:?} dropped", self.0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-08-31 15:18:10 -05:00
|
|
|
macro_rules! m {
|
|
|
|
(@ $body:expr) => {{
|
|
|
|
let f = || $body;
|
|
|
|
//~^ WARNING: drop order
|
|
|
|
f();
|
|
|
|
}};
|
|
|
|
($body:block) => {{
|
|
|
|
m!(@ $body);
|
|
|
|
}};
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
2021-09-21 03:05:11 -05:00
|
|
|
let a = (Foo(0), Foo(1));
|
2021-08-31 15:18:10 -05:00
|
|
|
m!({
|
|
|
|
let _ = &a;
|
|
|
|
//~^ HELP: add a dummy
|
|
|
|
let x = a.0;
|
2021-09-21 03:05:11 -05:00
|
|
|
println!("{:?}", x);
|
2021-08-31 15:18:10 -05:00
|
|
|
});
|
|
|
|
}
|