diff options
| author | Tom Kunc <tomkunc0@gmail.com> | 2023-01-09 07:01:41 -0700 |
|---|---|---|
| committer | Tom Kunc <tomkunc0@gmail.com> | 2023-01-09 07:01:41 -0700 |
| commit | 769273ca4ca41fe3ca704ff7793de95c5def1728 (patch) | |
| tree | 3baba3cdc29c113f2ef013bc6a2117c4dec43178 | |
| parent | 16654ce1549b51a17e64d4b4b4eadecd034eb683 (diff) | |
| download | rust-769273ca4ca41fe3ca704ff7793de95c5def1728.tar.gz rust-769273ca4ca41fe3ca704ff7793de95c5def1728.zip | |
Simplify code with @Veykril's suggestion.
| -rw-r--r-- | crates/ide-assists/src/handlers/inline_macro.rs | 21 |
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()), ) } |
