diff options
| author | Wyatt Herkamp <wherkamp@gmail.com> | 2024-04-15 14:11:45 -0400 |
|---|---|---|
| committer | Wyatt Herkamp <wherkamp@gmail.com> | 2024-04-15 14:11:45 -0400 |
| commit | 701068daf28d6a13d443b53170df70153ea4602e (patch) | |
| tree | f0f476f107252ecfb34b58e7bc0f558cd2e5dc0a | |
| parent | 0faa2940c7615fd845b6ad9dd44902c2104477e9 (diff) | |
| download | rust-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.rs | 13 |
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(), )) |
