| // 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() } } |