Flip binexpr works for lhs binexpr

This commit is contained in:
Matheus Cardoso 2023-08-25 15:47:27 -03:00 committed by Lukas Wirth
parent bc9c952b6d
commit e18b89452e

View file

@ -33,6 +33,15 @@ pub(crate) fn flip_binexpr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option
return None; 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( acc.add(
AssistId("flip_binexpr", AssistKind::RefactorRewrite), AssistId("flip_binexpr", AssistKind::RefactorRewrite),
"Flip binary expression", "Flip binary expression",
@ -114,6 +123,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] #[test]
fn flip_binexpr_works_inside_match() { fn flip_binexpr_works_inside_match() {
check_assist( check_assist(