2016-09-06 15:15:36 +02:00
|
|
|
#![feature(plugin, never_type)]
|
|
|
|
#![plugin(clippy)]
|
|
|
|
#![deny(diverging_sub_expression)]
|
|
|
|
|
|
|
|
#[allow(empty_loop)]
|
|
|
|
fn diverge() -> ! { loop {} }
|
|
|
|
|
2016-09-13 12:41:37 +02:00
|
|
|
struct A;
|
|
|
|
|
|
|
|
impl A {
|
|
|
|
fn foo(&self) -> ! { diverge() }
|
|
|
|
}
|
|
|
|
|
2016-09-06 15:15:36 +02:00
|
|
|
#[allow(unused_variables, unnecessary_operation)]
|
|
|
|
fn main() {
|
|
|
|
let b = true;
|
|
|
|
b || diverge(); //~ ERROR sub-expression diverges
|
2016-09-13 12:41:37 +02:00
|
|
|
b || A.foo(); //~ ERROR sub-expression diverges
|
2016-09-06 15:15:36 +02:00
|
|
|
let y = (5, diverge(), 6); //~ ERROR sub-expression diverges
|
2016-09-13 12:41:20 +02:00
|
|
|
println!("{}", y.1);
|
2016-09-06 15:15:36 +02:00
|
|
|
}
|