about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2024-04-17 12:05:35 +0200
committerLukas Wirth <lukastw97@gmail.com>2024-04-17 12:05:35 +0200
commit0eb7b6c7b5846d93a5d5e0a42b9aba6e26feef61 (patch)
treee036b943018cca4fad911e7881f0c8ebd0bc15ed
parent701068daf28d6a13d443b53170df70153ea4602e (diff)
downloadrust-0eb7b6c7b5846d93a5d5e0a42b9aba6e26feef61.tar.gz
rust-0eb7b6c7b5846d93a5d5e0a42b9aba6e26feef61.zip
Don't show unused_variables fixes if the name comes from a macro definition
-rw-r--r--crates/ide-diagnostics/src/handlers/unused_variables.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unused_variables.rs b/crates/ide-diagnostics/src/handlers/unused_variables.rs
index 0b22ac8ead0..fdd4e862caf 100644
--- a/crates/ide-diagnostics/src/handlers/unused_variables.rs
+++ b/crates/ide-diagnostics/src/handlers/unused_variables.rs
@@ -30,10 +30,10 @@ pub(crate) fn unused_variables(
         .primary_source(ctx.sema.db)
         .name()
         .map(|v| v.syntax().original_file_range_rooted(ctx.sema.db))
-        .filter(|it| Some(it.file_id) == ast.file_id.file_id())?;
-    if !diagnostic_range.range.contains_range(name_range.range) {
-        return None;
-    }
+        .filter(|it| {
+            Some(it.file_id) == ast.file_id.file_id()
+                && diagnostic_range.range.contains_range(it.range)
+        });
     let var_name = d.local.name(ctx.sema.db);
     Some(
         Diagnostic::new_with_syntax_node_ptr(
@@ -42,13 +42,9 @@ pub(crate) fn unused_variables(
             "unused variable",
             ast,
         )
-        .with_fixes(fixes(
-            ctx.sema.db,
-            var_name,
-            name_range.range,
-            diagnostic_range,
-            ast.file_id.is_macro(),
-        ))
+        .with_fixes(name_range.and_then(|it| {
+            fixes(ctx.sema.db, var_name, it.range, diagnostic_range, ast.file_id.is_macro())
+        }))
         .experimental(),
     )
 }