// Test crate used to check the `--generate-macro-expansion` option. //@ compile-flags: -Zunstable-options --generate-macro-expansion --generate-link-to-definition mod other; #[macro_export] macro_rules! bar { ($x:ident) => {{ $x += 2; $x *= 2; }} } macro_rules! bar2 { () => { fn foo2() -> impl std::fmt::Display { String::new() } } } macro_rules! bar3 { () => { fn foo3() {} fn foo4() -> String { String::new() } } } bar2!(); bar3!(); #[derive(Debug, PartialEq)] pub struct Bar; #[derive(Debug )] pub struct Bar2; fn y_f(_: &str, _: &str, _: &str) {} fn foo() { let mut y = 0; bar!(y); println!(" {y} "); // comment println!(" {y} "); let s = y_f("\ bla", stringify!(foo), stringify!(bar)); // Macro from another file. other_macro!(y); }