diff options
Diffstat (limited to 'crates/ra_hir/src/macros.rs')
-rw-r--r-- | crates/ra_hir/src/macros.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/ra_hir/src/macros.rs b/crates/ra_hir/src/macros.rs index c23ad53cc..4740e5337 100644 --- a/crates/ra_hir/src/macros.rs +++ b/crates/ra_hir/src/macros.rs | |||
@@ -250,3 +250,29 @@ fn convert_tt(tt: &SyntaxNode) -> Option<tt::Subtree> { | |||
250 | }; | 250 | }; |
251 | Some(res) | 251 | Some(res) |
252 | } | 252 | } |
253 | |||
254 | #[test] | ||
255 | fn test_convert_tt() { | ||
256 | let text = r#" | ||
257 | macro_rules! impl_froms { | ||
258 | ($e:ident: $($v:ident), *) => { | ||
259 | $( | ||
260 | impl From<$v> for $e { | ||
261 | fn from(it: $v) -> $e { | ||
262 | $e::$v(it) | ||
263 | } | ||
264 | } | ||
265 | )* | ||
266 | } | ||
267 | } | ||
268 | "#; | ||
269 | let source_file = ast::SourceFile::parse(text); | ||
270 | let maco_call = source_file | ||
271 | .syntax() | ||
272 | .descendants() | ||
273 | .find_map(ast::MacroCall::cast) | ||
274 | .unwrap(); | ||
275 | let tt = macro_call_to_tt(maco_call).unwrap(); | ||
276 | let tt = mbe::parse(&tt); | ||
277 | dbg!(tt); | ||
278 | } | ||