Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22139 from A4-Tacks/rename-unwrap-block
minor: Rename unwrap_block to unwrap_branch
Chayim Refael Friedman 4 weeks ago
parent 33d333a · parent 91b6846 · commit 27e0ca8
-rw-r--r--crates/ide-assists/src/handlers/unwrap_branch.rs (renamed from crates/ide-assists/src/handlers/unwrap_block.rs)142
-rw-r--r--crates/ide-assists/src/lib.rs4
-rw-r--r--crates/ide-assists/src/tests/generated.rs4
3 files changed, 108 insertions, 42 deletions
diff --git a/crates/ide-assists/src/handlers/unwrap_block.rs b/crates/ide-assists/src/handlers/unwrap_branch.rs
index 77941bcfb2..a71ba555d0 100644
--- a/crates/ide-assists/src/handlers/unwrap_block.rs
+++ b/crates/ide-assists/src/handlers/unwrap_branch.rs
@@ -10,7 +10,7 @@ use syntax::{
use crate::{AssistContext, AssistId, Assists};
-// Assist: unwrap_block
+// Assist: unwrap_branch
//
// This assist removes if...else, for, while and loop control statements to just keep the body.
//
@@ -27,7 +27,7 @@ use crate::{AssistContext, AssistId, Assists};
// println!("foo");
// }
// ```
-pub(crate) fn unwrap_block(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
+pub(crate) fn unwrap_branch(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
let l_curly_token = ctx.find_token_syntax_at_offset(T!['{'])?;
let block = l_curly_token.parent_ancestors().nth(1).and_then(ast::BlockExpr::cast)?;
let target = block.syntax().text_range();
@@ -68,9 +68,12 @@ pub(crate) fn unwrap_block(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option
}
};
};
+ let is_branch =
+ !block.is_standalone() || block.syntax().parent().and_then(ast::MatchArm::cast).is_some();
+ let label = if is_branch { "Unwrap branch" } else { "Unwrap block" };
let replacement = replacement.stmt_list()?;
- acc.add(AssistId::refactor_rewrite("unwrap_block"), "Unwrap block", target, |builder| {
+ acc.add(AssistId::refactor_rewrite("unwrap_branch"), label, target, |builder| {
let editor = builder.make_editor(block.syntax());
let replacement = replacement.dedent(from_indent).indent(into_indent);
let container = prefer_container.unwrap_or(container);
@@ -134,14 +137,14 @@ fn extract_statements(stmt_list: ast::StmtList) -> Vec<SyntaxElement> {
#[cfg(test)]
mod tests {
- use crate::tests::{check_assist, check_assist_not_applicable};
+ use crate::tests::{check_assist, check_assist_not_applicable, check_assist_with_label};
use super::*;
#[test]
fn unwrap_tail_expr_block() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
$0{
@@ -160,7 +163,7 @@ fn main() {
#[test]
fn unwrap_stmt_expr_block() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
$0{
@@ -178,7 +181,7 @@ fn main() {
);
// Pedantically, we should add an `;` here...
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
$0{
@@ -199,7 +202,7 @@ fn main() {
#[test]
fn simple_if() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
bar();
@@ -228,7 +231,7 @@ fn main() {
#[test]
fn simple_if_else() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
bar();
@@ -260,7 +263,7 @@ fn main() {
#[test]
fn simple_if_else_if() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
// bar();
@@ -294,7 +297,7 @@ fn main() {
#[test]
fn simple_if_else_if_nested() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
// bar();
@@ -330,7 +333,7 @@ fn main() {
#[test]
fn simple_if_else_if_nested_else() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
// bar();
@@ -370,7 +373,7 @@ fn main() {
#[test]
fn simple_if_else_if_nested_middle() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
// bar();
@@ -408,7 +411,7 @@ fn main() {
#[test]
fn simple_if_bad_cursor_position() {
check_assist_not_applicable(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
bar();$0
@@ -428,7 +431,7 @@ fn main() {
#[test]
fn simple_for() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
for i in 0..5 {$0
@@ -461,7 +464,7 @@ fn main() {
#[test]
fn simple_if_in_for() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
for i in 0..5 {
@@ -492,7 +495,7 @@ fn main() {
#[test]
fn simple_loop() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
loop {$0
@@ -525,7 +528,7 @@ fn main() {
#[test]
fn simple_while() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
while true {$0
@@ -558,7 +561,7 @@ fn main() {
#[test]
fn simple_let_else() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
let Some(2) = None else {$0
@@ -573,7 +576,7 @@ fn main() {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
let Some(2) = None else {$0
@@ -592,7 +595,7 @@ fn main() {
#[test]
fn unwrap_match_arm() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
match rel_path {
@@ -616,7 +619,7 @@ fn main() {
#[test]
fn unwrap_match_arm_in_let() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
let value = match rel_path {
@@ -640,7 +643,7 @@ fn main() {
#[test]
fn simple_if_in_while_bad_cursor_position() {
check_assist_not_applicable(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
while true {
@@ -661,7 +664,7 @@ fn main() {
#[test]
fn simple_single_line() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
{$0 0 }
@@ -678,7 +681,7 @@ fn main() {
#[test]
fn simple_nested_block() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
$0{
@@ -701,7 +704,7 @@ fn main() {
#[test]
fn nested_single_line() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
{$0 { println!("foo"); } }
@@ -715,7 +718,7 @@ fn main() {
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
{$0 { 0 } }
@@ -732,7 +735,7 @@ fn main() {
#[test]
fn simple_if_single_line() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
if true {$0 /* foo */ foo() } else { bar() /* bar */}
@@ -749,7 +752,7 @@ fn main() {
#[test]
fn if_single_statement() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
if true {$0
@@ -768,7 +771,7 @@ fn main() {
#[test]
fn multiple_statements() {
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() -> i32 {
if 2 > 1 {$0
@@ -792,7 +795,7 @@ fn main() -> i32 {
fn unwrap_block_in_let_initializers() {
// https://github.com/rust-lang/rust-analyzer/issues/13679
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
let x = {$0
@@ -807,7 +810,7 @@ fn main() {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() -> i32 {
let _ = {$01; 2};
@@ -820,7 +823,7 @@ fn main() -> i32 {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() -> i32 {
let mut a = {$01; 2};
@@ -833,7 +836,7 @@ fn main() -> i32 {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() -> i32 {
let mut a = {$0
@@ -857,7 +860,7 @@ fn main() -> i32 {
fn unwrap_if_in_let_initializers() {
// https://github.com/rust-lang/rust-analyzer/issues/13679
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
let a = 1;
@@ -881,7 +884,7 @@ fn main() {
fn unwrap_block_with_modifiers() {
// https://github.com/rust-lang/rust-analyzer/issues/17964
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
unsafe $0{
@@ -896,7 +899,7 @@ fn main() {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
async move $0{
@@ -911,7 +914,7 @@ fn main() {
"#,
);
check_assist(
- unwrap_block,
+ unwrap_branch,
r#"
fn main() {
try $0{
@@ -926,4 +929,67 @@ fn main() {
"#,
);
}
+
+ #[test]
+ fn unwrap_block_labels() {
+ check_assist_with_label(
+ unwrap_branch,
+ r#"
+fn main() {
+ $0{
+ bar;
+ }
+}
+"#,
+ "Unwrap block",
+ );
+ check_assist_with_label(
+ unwrap_branch,
+ r#"
+fn main() {
+ let x = $0{
+ bar()
+ };
+}
+"#,
+ "Unwrap block",
+ );
+ check_assist_with_label(
+ unwrap_branch,
+ r#"
+fn main() {
+ let x = if true $0{
+ bar()
+ };
+}
+"#,
+ "Unwrap branch",
+ );
+ check_assist_with_label(
+ unwrap_branch,
+ r#"
+fn main() {
+ let x = match () {
+ () => $0{
+ bar(),
+ }
+ };
+}
+"#,
+ "Unwrap branch",
+ );
+ check_assist_with_label(
+ unwrap_branch,
+ r#"
+fn main() {
+ match () {
+ () => $0{
+ bar(),
+ }
+ }
+}
+"#,
+ "Unwrap branch",
+ );
+ }
}
diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs
index 80f05caf4e..1fe385e95b 100644
--- a/crates/ide-assists/src/lib.rs
+++ b/crates/ide-assists/src/lib.rs
@@ -232,7 +232,7 @@ mod handlers {
mod unmerge_match_arm;
mod unnecessary_async;
mod unqualify_method_call;
- mod unwrap_block;
+ mod unwrap_branch;
mod unwrap_return_type;
mod unwrap_tuple;
mod unwrap_type_to_generic_arg;
@@ -380,7 +380,7 @@ mod handlers {
unmerge_imports::unmerge_imports,
unnecessary_async::unnecessary_async,
unqualify_method_call::unqualify_method_call,
- unwrap_block::unwrap_block,
+ unwrap_branch::unwrap_branch,
unwrap_return_type::unwrap_return_type,
unwrap_tuple::unwrap_tuple,
unwrap_type_to_generic_arg::unwrap_type_to_generic_arg,
diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs
index 048f3d7ce8..7e66f02475 100644
--- a/crates/ide-assists/src/tests/generated.rs
+++ b/crates/ide-assists/src/tests/generated.rs
@@ -3731,9 +3731,9 @@ mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for
}
#[test]
-fn doctest_unwrap_block() {
+fn doctest_unwrap_branch() {
check_doc_test(
- "unwrap_block",
+ "unwrap_branch",
r#####"
fn foo() {
if true {$0