Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/remove_parentheses.rs')
| -rw-r--r-- | crates/ide-assists/src/handlers/remove_parentheses.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/remove_parentheses.rs b/crates/ide-assists/src/handlers/remove_parentheses.rs index d514c1c291..fb051e5b57 100644 --- a/crates/ide-assists/src/handlers/remove_parentheses.rs +++ b/crates/ide-assists/src/handlers/remove_parentheses.rs @@ -163,6 +163,30 @@ mod tests { } #[test] + fn remove_parens_prefix_with_return_no_value() { + // removing `()` from !(return) would make `!return` which is invalid syntax + check_assist_not_applicable( + remove_parentheses, + r#"fn main() { let _x = true && !$0(return) || true; }"#, + ); + check_assist_not_applicable(remove_parentheses, r#"fn f() { !$0(return) }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { !$0(break) }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { !$0(continue) }"#); + + // Binary operators should still allow removal + check_assist( + remove_parentheses, + r#"fn f() { true || $0(return) }"#, + r#"fn f() { true || return }"#, + ); + check_assist( + remove_parentheses, + r#"fn f() { cond && $0(return) }"#, + r#"fn f() { cond && return }"#, + ); + } + + #[test] fn remove_parens_return_with_value_followed_by_block() { check_assist( remove_parentheses, |