// Warn for non-block expressions with diverging children.
match expr.node {
ExprKind::Block(..) | ExprKind::Loop(..) | ExprKind::Match(..) => {},
+ ExprKind::Call(ref callee, _) =>
+ self.warn_if_unreachable(expr.hir_id, callee.span, "call"),
+ ExprKind::MethodCall(_, ref span, _) =>
+ self.warn_if_unreachable(expr.hir_id, *span, "call"),
_ => self.warn_if_unreachable(expr.hir_id, expr.span, "expression"),
}
| ^^^^^^
= note: `#[warn(unreachable_code)]` implied by `#[warn(unused)]`
-warning: unreachable expression
+warning: unreachable call
--> $DIR/never-assign-dead-code.rs:10:5
|
LL | drop(x);
- | ^^^^^^^
+ | ^^^^
warning: unused variable: `x`
--> $DIR/never-assign-dead-code.rs:9:9
LL | #![deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
-error: unreachable expression
+error: unreachable call
--> $DIR/expr_call.rs:18:5
|
LL | bar(return);
- | ^^^^^^^^^^^
+ | ^^^
error: aborting due to 2 previous errors
LL | #![deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
-error: unreachable expression
- --> $DIR/expr_method.rs:21:5
+error: unreachable call
+ --> $DIR/expr_method.rs:21:9
|
LL | Foo.bar(return);
- | ^^^^^^^^^^^^^^^
+ | ^^^
error: aborting due to 2 previous errors
get_u8()); //~ ERROR unreachable expression
}
fn diverge_second() {
- call( //~ ERROR unreachable expression
+ call( //~ ERROR unreachable call
get_u8(),
diverge());
}
LL | #![deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
-error: unreachable expression
+error: unreachable call
--> $DIR/unreachable-in-call.rs:17:5
|
-LL | / call(
-LL | | get_u8(),
-LL | | diverge());
- | |__________________^
+LL | call(
+ | ^^^^
error: aborting due to 2 previous errors