diff options
Diffstat (limited to 'crates/hir_def/src')
-rw-r--r-- | crates/hir_def/src/nameres/tests/block.rs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/crates/hir_def/src/nameres/tests/block.rs b/crates/hir_def/src/nameres/tests/block.rs index 470ca593e..6cc659513 100644 --- a/crates/hir_def/src/nameres/tests/block.rs +++ b/crates/hir_def/src/nameres/tests/block.rs | |||
@@ -121,3 +121,66 @@ struct Struct {} | |||
121 | "#]], | 121 | "#]], |
122 | ); | 122 | ); |
123 | } | 123 | } |
124 | |||
125 | #[test] | ||
126 | fn legacy_macro_items() { | ||
127 | // Checks that legacy-scoped `macro_rules!` from parent namespaces are resolved and expanded | ||
128 | // correctly. | ||
129 | check_at( | ||
130 | r#" | ||
131 | macro_rules! hit { | ||
132 | () => { | ||
133 | struct Hit {} | ||
134 | } | ||
135 | } | ||
136 | |||
137 | fn f() { | ||
138 | hit!(); | ||
139 | $0 | ||
140 | } | ||
141 | "#, | ||
142 | expect![[r#" | ||
143 | block scope | ||
144 | Hit: t | ||
145 | crate | ||
146 | f: v | ||
147 | "#]], | ||
148 | ); | ||
149 | } | ||
150 | |||
151 | #[test] | ||
152 | fn macro_resolve() { | ||
153 | check_at( | ||
154 | r#" | ||
155 | //- /lib.rs crate:lib deps:core | ||
156 | use core::mark; | ||
157 | |||
158 | fn f() { | ||
159 | fn nested() { | ||
160 | mark::hit!(Hit); | ||
161 | $0 | ||
162 | } | ||
163 | } | ||
164 | //- /core.rs crate:core | ||
165 | pub mod mark { | ||
166 | #[macro_export] | ||
167 | macro_rules! _hit { | ||
168 | ($name:ident) => { | ||
169 | struct $name {} | ||
170 | } | ||
171 | } | ||
172 | |||
173 | pub use crate::_hit as hit; | ||
174 | } | ||
175 | "#, | ||
176 | expect![[r#" | ||
177 | block scope | ||
178 | Hit: t | ||
179 | block scope | ||
180 | nested: v | ||
181 | crate | ||
182 | f: v | ||
183 | mark: t | ||
184 | "#]], | ||
185 | ); | ||
186 | } | ||