about summary refs log tree commit diff
diff options
context:
space:
mode:
authorroife <roifewu@gmail.com>2024-02-26 20:23:36 +0800
committerroife <roifewu@gmail.com>2024-02-26 20:23:36 +0800
commit36298c622e93f562c8f6c0143730d4becb64d751 (patch)
tree932c4093db3e4a83028323b7ed22aecfa720dd86
parent8929853df7ddae47e63aa3a261f5f99de8130f32 (diff)
downloadrust-36298c622e93f562c8f6c0143730d4becb64d751.tar.gz
rust-36298c622e93f562c8f6c0143730d4becb64d751.zip
fix:do not handle callsites in macros' parameters
-rw-r--r--crates/ide-assists/src/handlers/inline_call.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/inline_call.rs b/crates/ide-assists/src/handlers/inline_call.rs
index 11b22b65205..fd042edb12a 100644
--- a/crates/ide-assists/src/handlers/inline_call.rs
+++ b/crates/ide-assists/src/handlers/inline_call.rs
@@ -107,6 +107,9 @@ pub(crate) fn inline_into_callers(acc: &mut Assists, ctx: &AssistContext<'_>) ->
                 let call_infos: Vec<_> = name_refs
                     .into_iter()
                     .filter_map(CallInfo::from_name_ref)
+                    // FIXME: do not handle callsites in macros' parameters, because
+                    // directly inlining into macros may cause errors.
+                    .filter(|call_info| !ctx.sema.hir_file_for(call_info.node.syntax()).is_macro())
                     .map(|call_info| {
                         let mut_node = builder.make_syntax_mut(call_info.node.syntax().clone());
                         (call_info, mut_node)