From db151763d42c725685bb9e86a16fa2b6cb7a64c7 Mon Sep 17 00:00:00 2001 From: Roland Ruckerbauer Date: Fri, 10 Jan 2020 20:35:23 +0100 Subject: Fix file_structure() to recognize macro_rules! where first token != "macro_rules" --- crates/ra_ide/src/display/structure.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/crates/ra_ide/src/display/structure.rs b/crates/ra_ide/src/display/structure.rs index a80d65ac7..be21fa913 100644 --- a/crates/ra_ide/src/display/structure.rs +++ b/crates/ra_ide/src/display/structure.rs @@ -151,10 +151,24 @@ fn structure_node(node: &SyntaxNode) -> Option { Some(node) }, ast::MacroCall(it) => { - let first_token = it.syntax().first_token().unwrap(); - if first_token.text().as_str() != "macro_rules" { - return None; + let macro_name = it.syntax() + .children() + .find(|c| + ![ + SyntaxKind::COMMENT, + SyntaxKind::WHITESPACE, + SyntaxKind::ATTR + ].iter() + .any(|&k| k == c.kind()) + ); + + match macro_name { + None => return None, + Some(n) => if n.first_token().unwrap().text().as_str() != "macro_rules" { + return None; + } } + decl(it) }, _ => None, -- cgit v1.2.3