]> git.lizzy.rs Git - rust.git/commitdiff
Allow expand-macro to be invoked anywhere inside a macro call
authorLukas Wirth <lukastw97@gmail.com>
Wed, 2 Jun 2021 19:39:53 +0000 (21:39 +0200)
committerLukas Wirth <lukastw97@gmail.com>
Wed, 2 Jun 2021 19:42:49 +0000 (21:42 +0200)
crates/ide/src/expand_macro.rs

index eebae5ebea50bd15e73c1e7f67c6155fec89d1d7..e0d01fa96ed8cb4540a50d529474678a9e1914d3 100644 (file)
@@ -28,8 +28,8 @@ pub struct ExpandedMacro {
 pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option<ExpandedMacro> {
     let sema = Semantics::new(db);
     let file = sema.parse(position.file_id);
-    let name_ref = find_node_at_offset::<ast::NameRef>(file.syntax(), position.offset)?;
-    let mac = name_ref.syntax().ancestors().find_map(ast::MacroCall::cast)?;
+    let mac = find_node_at_offset::<ast::MacroCall>(file.syntax(), position.offset)?;
+    let name = mac.path()?.segment()?.name_ref()?;
 
     let expanded = expand_macro_recur(&sema, &mac)?;
 
@@ -37,7 +37,7 @@ pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option<
     // macro expansion may lose all white space information
     // But we hope someday we can use ra_fmt for that
     let expansion = insert_whitespaces(expanded);
-    Some(ExpandedMacro { name: name_ref.text().to_string(), expansion })
+    Some(ExpandedMacro { name: name.to_string(), expansion })
 }
 
 fn expand_macro_recur(