Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/remove_mut.rs')
-rw-r--r--crates/ide-assists/src/handlers/remove_mut.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/crates/ide-assists/src/handlers/remove_mut.rs b/crates/ide-assists/src/handlers/remove_mut.rs
index 0b299e8349..43740a5a6d 100644
--- a/crates/ide-assists/src/handlers/remove_mut.rs
+++ b/crates/ide-assists/src/handlers/remove_mut.rs
@@ -1,4 +1,4 @@
-use syntax::{SyntaxKind, TextRange, T};
+use syntax::{SyntaxKind, T};
use crate::{AssistContext, AssistId, AssistKind, Assists};
@@ -19,11 +19,6 @@ use crate::{AssistContext, AssistId, AssistKind, Assists};
// ```
pub(crate) fn remove_mut(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
let mut_token = ctx.find_token_syntax_at_offset(T![mut])?;
- let delete_from = mut_token.text_range().start();
- let delete_to = match mut_token.next_token() {
- Some(it) if it.kind() == SyntaxKind::WHITESPACE => it.text_range().end(),
- _ => mut_token.text_range().end(),
- };
let target = mut_token.text_range();
acc.add(
@@ -31,7 +26,13 @@ pub(crate) fn remove_mut(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<(
"Remove `mut` keyword",
target,
|builder| {
- builder.delete(TextRange::new(delete_from, delete_to));
+ let mut editor = builder.make_editor(&mut_token.parent().unwrap());
+ match mut_token.next_token() {
+ Some(it) if it.kind() == SyntaxKind::WHITESPACE => editor.delete(it),
+ _ => (),
+ }
+ editor.delete(mut_token);
+ builder.add_file_edits(ctx.file_id(), editor);
},
)
}