about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_lints/src/mixed_read_write_in_expression.rs4
-rw-r--r--tests/ui/diverging_sub_expression.stderr14
2 files changed, 3 insertions, 15 deletions
diff --git a/clippy_lints/src/mixed_read_write_in_expression.rs b/clippy_lints/src/mixed_read_write_in_expression.rs
index caa3463b864..ac94820b40b 100644
--- a/clippy_lints/src/mixed_read_write_in_expression.rs
+++ b/clippy_lints/src/mixed_read_write_in_expression.rs
@@ -139,13 +139,13 @@ impl<'a, 'tcx> Visitor<'tcx> for DivergenceVisitor<'a, 'tcx> {
         match e.kind {
             // fix #10776
             ExprKind::Block(block, ..) => {
-                if let Some(e) = block.expr {
+                if let Some(e) = block.expr && block.stmts.is_empty() {
                     self.visit_expr(e);
 
                     return;
                 }
 
-                if let [stmt] = block.stmts && block.stmts.len() == 1 {
+                if let [stmt, rest @ ..] = block.stmts && rest.is_empty() {
                     match stmt.kind {
                         StmtKind::Expr(e) | StmtKind::Semi(e) => self.visit_expr(e),
                         _ => {},
diff --git a/tests/ui/diverging_sub_expression.stderr b/tests/ui/diverging_sub_expression.stderr
index e6396de2bb7..f121159ca3e 100644
--- a/tests/ui/diverging_sub_expression.stderr
+++ b/tests/ui/diverging_sub_expression.stderr
@@ -63,22 +63,10 @@ LL |             18 => false || { return },
    |                              ^^^^^^
 
 error: sub-expression diverges
-  --> $DIR/diverging_sub_expression.rs:47:36
-   |
-LL |             19 => true || { _ = 1; return },
-   |                                    ^^^^^^
-
-error: sub-expression diverges
-  --> $DIR/diverging_sub_expression.rs:48:37
-   |
-LL |             20 => false || { _ = 1; return },
-   |                                     ^^^^^^
-
-error: sub-expression diverges
   --> $DIR/diverging_sub_expression.rs:52:26
    |
 LL |             _ => true || break,
    |                          ^^^^^
 
-error: aborting due to 13 previous errors
+error: aborting due to 11 previous errors