about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWyatt Herkamp <wherkamp@gmail.com>2024-04-15 14:11:45 -0400
committerWyatt Herkamp <wherkamp@gmail.com>2024-04-15 14:11:45 -0400
commit701068daf28d6a13d443b53170df70153ea4602e (patch)
treef0f476f107252ecfb34b58e7bc0f558cd2e5dc0a
parent0faa2940c7615fd845b6ad9dd44902c2104477e9 (diff)
downloadrust-701068daf28d6a13d443b53170df70153ea4602e.tar.gz
rust-701068daf28d6a13d443b53170df70153ea4602e.zip
Verify we are not in a macro attempt 2
-rw-r--r--crates/ide-diagnostics/src/handlers/unused_variables.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unused_variables.rs b/crates/ide-diagnostics/src/handlers/unused_variables.rs
index 114783d323d..0b22ac8ead0 100644
--- a/crates/ide-diagnostics/src/handlers/unused_variables.rs
+++ b/crates/ide-diagnostics/src/handlers/unused_variables.rs
@@ -25,10 +25,13 @@ pub(crate) fn unused_variables(
     }
     let diagnostic_range = ctx.sema.diagnostics_display_range(ast);
     // The range for the Actual Name. We don't want to replace the entire declarition. Using the diagnostic range causes issues within in Array Destructuring.
-    let name_range =
-        d.local.primary_source(ctx.sema.db).name().map(|v| v.syntax().value.text_range())?;
-    // Make sure we are within the diagnostic range for the variable
-    if !diagnostic_range.range.contains_range(name_range) {
+    let name_range = d
+        .local
+        .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;
     }
     let var_name = d.local.name(ctx.sema.db);
@@ -42,7 +45,7 @@ pub(crate) fn unused_variables(
         .with_fixes(fixes(
             ctx.sema.db,
             var_name,
-            name_range,
+            name_range.range,
             diagnostic_range,
             ast.file_id.is_macro(),
         ))