diff options
Diffstat (limited to 'crates/ra_hir_def')
| -rw-r--r-- | crates/ra_hir_def/src/nameres/tests/macros.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/nameres/tests/macros.rs b/crates/ra_hir_def/src/nameres/tests/macros.rs index b0befdfbd..9bc0e6287 100644 --- a/crates/ra_hir_def/src/nameres/tests/macros.rs +++ b/crates/ra_hir_def/src/nameres/tests/macros.rs | |||
| @@ -136,6 +136,43 @@ fn macro_rules_export_with_local_inner_macros_are_visible() { | |||
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | #[test] | 138 | #[test] |
| 139 | fn local_inner_macros_makes_local_macros_usable() { | ||
| 140 | let map = def_map( | ||
| 141 | " | ||
| 142 | //- /main.rs crate:main deps:foo | ||
| 143 | foo::structs!(Foo, Bar); | ||
| 144 | mod bar; | ||
| 145 | //- /bar.rs | ||
| 146 | use crate::*; | ||
| 147 | //- /lib.rs crate:foo | ||
| 148 | #[macro_export(local_inner_macros)] | ||
| 149 | macro_rules! structs { | ||
| 150 | ($($i:ident),*) => { | ||
| 151 | inner!($($i),*); | ||
| 152 | } | ||
| 153 | } | ||
| 154 | #[macro_export] | ||
| 155 | macro_rules! inner { | ||
| 156 | ($($i:ident),*) => { | ||
| 157 | $(struct $i { field: u32 } )* | ||
| 158 | } | ||
| 159 | } | ||
| 160 | ", | ||
| 161 | ); | ||
| 162 | assert_snapshot!(map, @r###" | ||
| 163 | ⋮crate | ||
| 164 | ⋮Bar: t v | ||
| 165 | ⋮Foo: t v | ||
| 166 | ⋮bar: t | ||
| 167 | ⋮ | ||
| 168 | ⋮crate::bar | ||
| 169 | ⋮Bar: t v | ||
| 170 | ⋮Foo: t v | ||
| 171 | ⋮bar: t | ||
| 172 | "###); | ||
| 173 | } | ||
| 174 | |||
| 175 | #[test] | ||
| 139 | fn unexpanded_macro_should_expand_by_fixedpoint_loop() { | 176 | fn unexpanded_macro_should_expand_by_fixedpoint_loop() { |
| 140 | let map = def_map( | 177 | let map = def_map( |
| 141 | " | 178 | " |
