Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #20736 from A4-Tacks/fix-invert-if-let-chain
Fix applicable on if-let-chain for invert_if
Shoyu Vanilla (Flint) 7 months ago
parent 750d566 · parent 39ef6c2 · commit a96d92e
-rw-r--r--crates/ide-assists/src/handlers/invert_if.rs12
-rw-r--r--crates/ide-db/src/syntax_helpers/node_ext.rs5
2 files changed, 13 insertions, 4 deletions
diff --git a/crates/ide-assists/src/handlers/invert_if.rs b/crates/ide-assists/src/handlers/invert_if.rs
index d198870b02..7576d2fab9 100644
--- a/crates/ide-assists/src/handlers/invert_if.rs
+++ b/crates/ide-assists/src/handlers/invert_if.rs
@@ -125,6 +125,18 @@ mod tests {
}
#[test]
+ fn invert_if_doesnt_apply_with_if_let_chain() {
+ check_assist_not_applicable(
+ invert_if,
+ "fn f() { i$0f x && let Some(_) = Some(1) { 1 } else { 0 } }",
+ );
+ check_assist_not_applicable(
+ invert_if,
+ "fn f() { i$0f let Some(_) = Some(1) && x { 1 } else { 0 } }",
+ );
+ }
+
+ #[test]
fn invert_if_option_case() {
check_assist(
invert_if,
diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs
index cefd8fd496..e1d140730e 100644
--- a/crates/ide-db/src/syntax_helpers/node_ext.rs
+++ b/crates/ide-db/src/syntax_helpers/node_ext.rs
@@ -265,10 +265,7 @@ pub fn is_pattern_cond(expr: ast::Expr) -> bool {
ast::Expr::BinExpr(expr)
if expr.op_kind() == Some(ast::BinaryOp::LogicOp(ast::LogicOp::And)) =>
{
- expr.lhs()
- .map(is_pattern_cond)
- .or_else(|| expr.rhs().map(is_pattern_cond))
- .unwrap_or(false)
+ expr.lhs().map_or(false, is_pattern_cond) || expr.rhs().map_or(false, is_pattern_cond)
}
ast::Expr::ParenExpr(expr) => expr.expr().is_some_and(is_pattern_cond),
ast::Expr::LetExpr(_) => true,