diff --git a/clippy_lints/src/eval_order_dependence.rs b/clippy_lints/src/eval_order_dependence.rs index e53c830e11d..28e385abd82 100644 --- a/clippy_lints/src/eval_order_dependence.rs +++ b/clippy_lints/src/eval_order_dependence.rs @@ -104,7 +104,7 @@ impl<'a, 'tcx> DivergenceVisitor<'a, 'tcx> { self.visit_expr(guard); } // make sure top level arm expressions aren't linted - walk_expr(self, &*arm.body); + self.maybe_walk_expr(&*arm.body); } } _ => walk_expr(self, e), diff --git a/tests/compile-fail/diverging_sub_expression.rs b/tests/compile-fail/diverging_sub_expression.rs index 782c406d74c..f9a6e66da42 100644 --- a/tests/compile-fail/diverging_sub_expression.rs +++ b/tests/compile-fail/diverging_sub_expression.rs @@ -31,6 +31,10 @@ fn foobar() { 8 => break, 9 => diverge(), 3 => (println!("moo"), diverge()), //~ ERROR sub-expression diverges + 10 => match 42 { + 99 => return, + _ => ((), panic!("boo")), + }, _ => (println!("boo"), break), //~ ERROR sub-expression diverges }; }