| #![feature(decl_macro)] |
| |
| pub mod foo { |
| pub use self::bar::m; |
| mod bar { |
| fn f() -> u32 { 1 } |
| pub macro m() { |
| f() |
| } |
| } |
| } |
| |
| pub struct SomeType; |
| |
| // `$crate` |
| pub macro uses_dollar_crate_modern() { |
| type Alias = $crate::SomeType; |
| } |
| |
| pub macro define_uses_dollar_crate_modern_nested($uses_dollar_crate_modern_nested: ident) { |
| macro $uses_dollar_crate_modern_nested() { |
| type AliasCrateModernNested = $crate::SomeType; |
| } |
| } |
| |
| #[macro_export] |
| macro_rules! define_uses_dollar_crate_legacy_nested { |
| () => { |
| macro_rules! uses_dollar_crate_legacy_nested { |
| () => { |
| type AliasLegacyNested = $crate::SomeType; |
| } |
| } |
| } |
| } |
| |
| // `crate` |
| pub macro uses_crate_modern() { |
| type AliasCrate = crate::SomeType; |
| } |
| |
| pub macro define_uses_crate_modern_nested($uses_crate_modern_nested: ident) { |
| macro $uses_crate_modern_nested() { |
| type AliasCrateModernNested = crate::SomeType; |
| } |
| } |