about summary refs log tree commit diff
path: root/src/test/ui/consts/const-eval/infinite_loop.rs
blob: af5e7658d48d2641f572ac9839d48d895d40add4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {
    // Tests the Collatz conjecture with an incorrect base case (0 instead of 1).
    // The value of `n` will loop indefinitely (4 - 2 - 1 - 4).
    let _ = [(); {
        //~^ WARNING Constant evaluating a complex constant, this might take some time
        let mut n = 113383; // #20 in https://oeis.org/A006884
        while n != 0 {
        //~^ ERROR `while` is not allowed in a `const`
            n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
            //~^ ERROR evaluation of constant value failed
            //~| ERROR `if` is not allowed in a `const`
        }
        n
    }];
}