about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/ide-assists/src/handlers/bind_unused_param.rs34
1 files changed, 16 insertions, 18 deletions
diff --git a/crates/ide-assists/src/handlers/bind_unused_param.rs b/crates/ide-assists/src/handlers/bind_unused_param.rs
index 7d8672dbbd9..ef88592ba37 100644
--- a/crates/ide-assists/src/handlers/bind_unused_param.rs
+++ b/crates/ide-assists/src/handlers/bind_unused_param.rs
@@ -27,10 +27,7 @@ use super::remove_unused_param::is_trait_impl;
 pub(crate) fn bind_unused_param(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
     let param: ast::Param = ctx.find_node_at_offset()?;
 
-    let ident_pat = match param.pat()? {
-        ast::Pat::IdentPat(it) => it,
-        _ => return None,
-    };
+    let Some(ast::Pat::IdentPat(ident_pat)) = param.pat() else { return None };
 
     let func = param.syntax().ancestors().find_map(ast::Fn::cast)?;
     if is_trait_impl(&func) {
@@ -47,28 +44,29 @@ pub(crate) fn bind_unused_param(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
         return None;
     }
 
-    let line_index = ctx.db().line_index(ctx.file_id());
-
-    let mut indent = func.indent_level();
-    indent.0 += 1;
-    let mut text = format!("\n{indent}let _ = {ident_pat};");
-
     let stmt_list = func.body()?.stmt_list()?;
     let l_curly_range = stmt_list.l_curly_token()?.text_range();
     let r_curly_range = stmt_list.r_curly_token()?.text_range();
-    let left_line = line_index.line_col(l_curly_range.end()).line;
-    let right_line = line_index.line_col(r_curly_range.start()).line;
-
-    if left_line == right_line {
-        cov_mark::hit!(single_line);
-        text.push('\n');
-    }
 
     acc.add(
-        AssistId("bind_unused_param", AssistKind::Refactor),
+        AssistId("bind_unused_param", AssistKind::QuickFix),
         &format!("Bind as `let _ = {};`", &ident_pat),
         param.syntax().text_range(),
         |builder| {
+            let line_index = ctx.db().line_index(ctx.file_id());
+
+            let mut indent = func.indent_level();
+            indent.0 += 1;
+            let mut text = format!("\n{indent}let _ = {ident_pat};");
+
+            let left_line = line_index.line_col(l_curly_range.end()).line;
+            let right_line = line_index.line_col(r_curly_range.start()).line;
+
+            if left_line == right_line {
+                cov_mark::hit!(single_line);
+                text.push('\n');
+            }
+
             builder.insert(l_curly_range.end(), text);
         },
     )