Unnamed repository; edit this file 'description' to name the repository.
Flip binexpr works for lhs binexpr
Matheus Cardoso 2023-12-08
parent bc9c952 · commit e18b894
-rw-r--r--crates/ide-assists/src/handlers/flip_binexpr.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/flip_binexpr.rs b/crates/ide-assists/src/handlers/flip_binexpr.rs
index 2ea6f58fa0..4b1e416596 100644
--- a/crates/ide-assists/src/handlers/flip_binexpr.rs
+++ b/crates/ide-assists/src/handlers/flip_binexpr.rs
@@ -33,6 +33,15 @@ pub(crate) fn flip_binexpr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option
return None;
}
+ // If the lhs is a binary expression we check if its rhs can be used as the lhs of the current expression
+ let lhs = match BinExpr::cast(lhs.clone()) {
+ Some(lhs) => match lhs.rhs() {
+ Some(lhs) => lhs,
+ None => lhs,
+ },
+ None => lhs,
+ };
+
acc.add(
AssistId("flip_binexpr", AssistKind::RefactorRewrite),
"Flip binary expression",
@@ -115,6 +124,15 @@ mod tests {
}
#[test]
+ fn flip_binexpr_works_for_lhs_binexpr() {
+ check_assist(
+ flip_binexpr,
+ r"fn f() { let res = 1 + (2 - 3) +$0 4 + 5; }",
+ r"fn f() { let res = 1 + 4 + (2 - 3) + 5; }",
+ )
+ }
+
+ #[test]
fn flip_binexpr_works_inside_match() {
check_assist(
flip_binexpr,