about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTom Kunc <tomkunc0@gmail.com>2023-01-09 07:01:41 -0700
committerTom Kunc <tomkunc0@gmail.com>2023-01-09 07:01:41 -0700
commit769273ca4ca41fe3ca704ff7793de95c5def1728 (patch)
tree3baba3cdc29c113f2ef013bc6a2117c4dec43178
parent16654ce1549b51a17e64d4b4b4eadecd034eb683 (diff)
downloadrust-769273ca4ca41fe3ca704ff7793de95c5def1728.tar.gz
rust-769273ca4ca41fe3ca704ff7793de95c5def1728.zip
Simplify code with @Veykril's suggestion.
-rw-r--r--crates/ide-assists/src/handlers/inline_macro.rs21
1 files changed, 6 insertions, 15 deletions
diff --git a/crates/ide-assists/src/handlers/inline_macro.rs b/crates/ide-assists/src/handlers/inline_macro.rs
index d669826aa7a..9d03f03d201 100644
--- a/crates/ide-assists/src/handlers/inline_macro.rs
+++ b/crates/ide-assists/src/handlers/inline_macro.rs
@@ -34,25 +34,16 @@ use crate::{AssistContext, AssistId, AssistKind, Assists};
 // }
 // ```
 pub(crate) fn inline_macro(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
-    let tok = ctx.token_at_offset().right_biased()?;
-
-    let mut anc = tok.parent_ancestors();
-    let (_name, expanded, unexpanded) = loop {
-        let node = anc.next()?;
-        if let Some(mac) = ast::MacroCall::cast(node.clone()) {
-            break (
-                mac.path()?.segment()?.name_ref()?.to_string(),
-                ctx.sema.expand(&mac)?.clone_for_update(),
-                node,
-            );
-        }
-    };
+    let unexpanded = ctx.find_node_at_offset::<ast::MacroCall>()?;
+    let expanded = ctx.sema.expand(&unexpanded)?.clone_for_update();
+
+    let text_range = unexpanded.syntax().text_range();
 
     acc.add(
         AssistId("inline_macro", AssistKind::RefactorRewrite),
         format!("Inline macro"),
-        unexpanded.text_range(),
-        |builder| builder.replace(unexpanded.text_range(), expanded.to_string()),
+        text_range,
+        |builder| builder.replace(text_range, expanded.to_string()),
     )
 }