Skip to content

Commit a225728

Browse files
committed
don't lint expressions referencing ! objects, just expressions creating them
1 parent f469860 commit a225728

File tree

2 files changed

+3
-6
lines changed

2 files changed

+3
-6
lines changed

clippy_lints/src/eval_order_dependence.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ impl<'a, 'tcx> DivergenceVisitor<'a, 'tcx> {
122122

123123
impl<'a, 'tcx, 'v> Visitor<'v> for DivergenceVisitor<'a, 'tcx> {
124124
fn visit_expr(&mut self, e: &'v Expr) {
125-
// this match can be replaced by just the default arm, once
126-
// https://github.com/rust-lang/rust/issues/35121 makes sure that
127-
// ! is propagated properly
128125
match e.node {
129126
ExprAgain(_) |
130127
ExprBreak(_) |
@@ -137,8 +134,8 @@ impl<'a, 'tcx, 'v> Visitor<'v> for DivergenceVisitor<'a, 'tcx> {
137134
_ => {},
138135
},
139136
ExprMethodCall(..) => { /* TODO */ },
140-
_ => if let ty::TyNever = self.0.tcx.expr_ty(e).sty {
141-
self.report_diverging_sub_expr(e);
137+
_ => {
138+
// do not lint expressions referencing objects of type `!`, as that required a diverging expression to begin with
142139
},
143140
}
144141
self.maybe_walk_expr(e);

tests/compile-fail/diverging_sub_expression.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ fn main() {
1010
let b = true;
1111
b || diverge(); //~ ERROR sub-expression diverges
1212
let y = (5, diverge(), 6); //~ ERROR sub-expression diverges
13-
println!("{}", y.1); //~ ERROR sub-expression diverges
13+
println!("{}", y.1);
1414
}

0 commit comments

Comments
 (0)