about summary refs log tree commit diff
path: root/tests/ui/or-patterns/lazy-and-or.rs
blob: 3d69553132b9886713706e5655914d87a14134de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//@ run-pass
// This test verifies the short-circuiting behavior of logical operators `||` and `&&`.
// It ensures that the right-hand expression is not evaluated when the left-hand
// expression is sufficient to determine the result.

fn would_panic_if_called(x: &mut isize) -> bool {
    *x += 1;
    assert!(false, "This function should never be called due to short-circuiting");
    false
}

fn main() {
    let x = 1 == 2 || 3 == 3;
    assert!(x);

    let mut y: isize = 10;
    println!("Result of short-circuit: {}", x || would_panic_if_called(&mut y));
    assert_eq!(y, 10, "y should remain 10 if short-circuiting works correctly");

    if true && x {
        assert!(true);
    } else {
        assert!(false, "This branch should not be reached");
    }
}