Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | crates/ide-assists/src/handlers/flip_binexpr.rs | 18 |
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, |