| // revisions:rpass1 rpass2 |
| // compile-flags: -Z query-dep-graph |
| |
| // We use #[inline(always)] to ensure that the downstream crate |
| // will always load the MIR for these functions |
| |
| #![feature(rustc_attrs)] |
| |
| #[allow(unused)] |
| macro_rules! first_macro { |
| () => { |
| println!("New call!"); |
| } |
| } |
| |
| #[rustc_clean(except="opt_hir_owner_nodes,typeck,optimized_mir,promoted_mir", cfg="rpass2")] |
| #[inline(always)] |
| pub fn changed_fn() { |
| // This will cause additional hygiene to be generate, |
| // which will cause the SyntaxContext/ExpnId raw ids to be |
| // different when we write out `my_fn` to the crate metadata. |
| #[cfg(rpass2)] |
| first_macro!(); |
| } |
| |
| macro_rules! print_loc { |
| () => { |
| println!("Caller loc: {}", std::panic::Location::caller()); |
| } |
| } |
| |
| #[rustc_clean(cfg="rpass2")] |
| #[inline(always)] |
| pub fn unchanged_fn() { |
| print_loc!(); |
| } |