| // Make sure the generated suggestion suggest editing the user code instead of |
| // the macro implementation (which might come from an external crate). |
| // issue: <https://github.com/rust-lang/rust/issues/139049> |
| |
| //@ run-rustfix |
| |
| #![allow(dead_code)] |
| |
| // You could assume that this comes from an extern crate (it doesn't |
| // because an aux crate would be overkill for this test). |
| macro_rules! perform { ($e:expr) => { D(&$e).end() } } |
| //~^ ERROR does not live long enough |
| //~| ERROR does not live long enough |
| |
| fn main() { |
| { let l = (); perform!(l); }; |
| //~^ SUGGESTION ; |
| |
| let _x = { let l = (); let x = perform!(l); x }; |
| //~^ SUGGESTION let x |
| } |
| |
| struct D<T>(T); |
| impl<T> Drop for D<T> { fn drop(&mut self) {} } |
| impl<T> D<T> { fn end(&self) -> String { String::new() } } |