mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 13:48:50 +00:00
Add remove_mut
assist
This commit is contained in:
parent
d07f043ef1
commit
312a779610
4 changed files with 67 additions and 0 deletions
|
@ -548,6 +548,23 @@ fn main() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn doctest_remove_mut() {
|
||||||
|
check(
|
||||||
|
"remove_mut",
|
||||||
|
r#####"
|
||||||
|
impl Walrus {
|
||||||
|
fn feed(&mut<|> self, amount: u32) {}
|
||||||
|
}
|
||||||
|
"#####,
|
||||||
|
r#####"
|
||||||
|
impl Walrus {
|
||||||
|
fn feed(&self, amount: u32) {}
|
||||||
|
}
|
||||||
|
"#####,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn doctest_replace_if_let_with_match() {
|
fn doctest_replace_if_let_with_match() {
|
||||||
check(
|
check(
|
||||||
|
|
32
crates/ra_assists/src/handlers/remove_mut.rs
Normal file
32
crates/ra_assists/src/handlers/remove_mut.rs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
use ra_syntax::{SyntaxKind, TextRange, T};
|
||||||
|
|
||||||
|
use crate::{Assist, AssistCtx, AssistId};
|
||||||
|
|
||||||
|
// Assist: remove_mut
|
||||||
|
//
|
||||||
|
// Removes the `mut` keyword.
|
||||||
|
//
|
||||||
|
// ```
|
||||||
|
// impl Walrus {
|
||||||
|
// fn feed(&mut<|> self, amount: u32) {}
|
||||||
|
// }
|
||||||
|
// ```
|
||||||
|
// ->
|
||||||
|
// ```
|
||||||
|
// impl Walrus {
|
||||||
|
// fn feed(&self, amount: u32) {}
|
||||||
|
// }
|
||||||
|
// ```
|
||||||
|
pub(crate) fn remove_mut(ctx: AssistCtx) -> Option<Assist> {
|
||||||
|
let mut_token = ctx.find_token_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(),
|
||||||
|
};
|
||||||
|
|
||||||
|
ctx.add_assist(AssistId("remove_mut"), "Remove `mut` keyword", |edit| {
|
||||||
|
edit.set_cursor(delete_from);
|
||||||
|
edit.delete(TextRange::from_to(delete_from, delete_to));
|
||||||
|
})
|
||||||
|
}
|
|
@ -108,6 +108,7 @@ mod handlers {
|
||||||
mod introduce_variable;
|
mod introduce_variable;
|
||||||
mod inline_local_variable;
|
mod inline_local_variable;
|
||||||
mod raw_string;
|
mod raw_string;
|
||||||
|
mod remove_mut;
|
||||||
mod replace_if_let_with_match;
|
mod replace_if_let_with_match;
|
||||||
mod split_import;
|
mod split_import;
|
||||||
mod remove_dbg;
|
mod remove_dbg;
|
||||||
|
@ -147,6 +148,7 @@ mod handlers {
|
||||||
raw_string::make_raw_string,
|
raw_string::make_raw_string,
|
||||||
raw_string::make_usual_string,
|
raw_string::make_usual_string,
|
||||||
raw_string::remove_hash,
|
raw_string::remove_hash,
|
||||||
|
remove_mut::remove_mut,
|
||||||
early_return::convert_to_guarded_return,
|
early_return::convert_to_guarded_return,
|
||||||
auto_import::auto_import,
|
auto_import::auto_import,
|
||||||
]
|
]
|
||||||
|
|
|
@ -527,6 +527,22 @@ fn main() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `remove_mut`
|
||||||
|
|
||||||
|
Removes the `mut` keyword.
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// BEFORE
|
||||||
|
impl Walrus {
|
||||||
|
fn feed(&mut┃ self, amount: u32) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AFTER
|
||||||
|
impl Walrus {
|
||||||
|
fn feed(&self, amount: u32) {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## `replace_if_let_with_match`
|
## `replace_if_let_with_match`
|
||||||
|
|
||||||
Replaces `if let` with an else branch with a `match` expression.
|
Replaces `if let` with an else branch with a `match` expression.
|
||||||
|
|
Loading…
Reference in a new issue