Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_def/src/nameres/tests/macros.rs')
| -rw-r--r-- | crates/hir_def/src/nameres/tests/macros.rs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/crates/hir_def/src/nameres/tests/macros.rs b/crates/hir_def/src/nameres/tests/macros.rs index 5d770ecab0..813c16c208 100644 --- a/crates/hir_def/src/nameres/tests/macros.rs +++ b/crates/hir_def/src/nameres/tests/macros.rs @@ -1086,6 +1086,7 @@ struct B; #[test] fn eager_macro_correctly_resolves_dollar_crate() { + // MBE -> eager -> $crate::mbe check( r#" //- /lib.rs @@ -1108,9 +1109,37 @@ struct A; "#, expect![[r#" crate + A: t v inner: m "#]], ); + // eager -> MBE -> $crate::mbe + check( + r#" +//- /lib.rs +#[rustc_builtin_macro] +macro_rules! include { () => {} } + +#[macro_export] +macro_rules! inner { + () => { "inc.rs" }; +} - // FIXME: This currently fails. The result should contain `A: t v`. +macro_rules! n { + () => { + $crate::inner!() + }; +} + +include!(n!()); + +//- /inc.rs +struct A; +"#, + expect![[r#" + crate + A: t v + inner: m + "#]], + ); } |