Skip to content

Commit cc7cfc5

Browse files
Merge #9186
9186: fix: Prefer attr macros in "expand macro recursively" r=jonas-schievink a=jonas-schievink This allows expanding attribute macros on fn-like macro invocations bors r+ Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2 parents a60978d + fcf22d6 commit cc7cfc5

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

crates/ide/src/expand_macro.rs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ use std::iter;
22

33
use hir::Semantics;
44
use ide_db::RootDatabase;
5-
use syntax::{
6-
ast, match_ast, ted, AstNode, NodeOrToken, SyntaxKind, SyntaxKind::*, SyntaxNode, WalkEvent, T,
7-
};
5+
use syntax::{ast, ted, AstNode, NodeOrToken, SyntaxKind, SyntaxKind::*, SyntaxNode, WalkEvent, T};
86

97
use crate::FilePosition;
108

@@ -32,25 +30,21 @@ pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option<
3230
let mut expanded = None;
3331
let mut name = None;
3432
for node in tok.ancestors() {
35-
match_ast! {
36-
match node {
37-
ast::MacroCall(mac) => {
38-
name = Some(mac.path()?.segment()?.name_ref()?.to_string());
39-
expanded = expand_macro_recur(&sema, &mac);
40-
break;
41-
},
42-
ast::Item(item) => {
43-
// FIXME: add the macro name
44-
// FIXME: make this recursive too
45-
name = Some("?".to_string());
46-
expanded = sema.expand_attr_macro(&item);
47-
if expanded.is_some() {
48-
break;
49-
}
50-
},
51-
_ => {}
33+
if let Some(item) = ast::Item::cast(node.clone()) {
34+
expanded = sema.expand_attr_macro(&item);
35+
if expanded.is_some() {
36+
// FIXME: add the macro name
37+
// FIXME: make this recursive too
38+
name = Some("?".to_string());
39+
break;
5240
}
5341
}
42+
43+
if let Some(mac) = ast::MacroCall::cast(node) {
44+
name = Some(mac.path()?.segment()?.name_ref()?.to_string());
45+
expanded = expand_macro_recur(&sema, &mac);
46+
break;
47+
}
5448
}
5549

5650
// FIXME:

0 commit comments

Comments
 (0)