@@ -2,9 +2,7 @@ use std::iter;
22
33use hir:: Semantics ;
44use 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
97use 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