#![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() {} |