25 lines
566 B
Rust
25 lines
566 B
Rust
|
#![allow(incomplete_features, dead_code)]
|
||
|
#![deny(unconditional_recursion)] //~ note: the lint level is defined here
|
||
|
#![feature(explicit_tail_calls)]
|
||
|
|
||
|
fn f(x: bool) {
|
||
|
//~^ error: function cannot return without recursing
|
||
|
//~| note: cannot return without recursing
|
||
|
if x {
|
||
|
become f(!x)
|
||
|
} else {
|
||
|
f(!x) //~ note: recursive call site
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// This should *not* lint, tail-recursive functions which never return is a reasonable thing
|
||
|
fn g(x: bool) {
|
||
|
if x {
|
||
|
become g(!x)
|
||
|
} else {
|
||
|
become g(!x)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {}
|