about summary refs log tree commit diff
path: root/tests/ui/or-patterns
diff options
context:
space:
mode:
authorreddevilmidzy <midzy0228@gmail.com>2025-04-18 00:44:11 +0900
committerreddevilmidzy <midzy0228@gmail.com>2025-04-21 16:16:38 +0900
commitdd2d6b222b7a7ad615e612b55fcf3933d4036be3 (patch)
tree869e539efd5abe6f8959d687af7fac80a1fa0a67 /tests/ui/or-patterns
parentf433fa46b0fd27d35219357ad75f54d294081bc4 (diff)
downloadrust-dd2d6b222b7a7ad615e612b55fcf3933d4036be3.tar.gz
rust-dd2d6b222b7a7ad615e612b55fcf3933d4036be3.zip
Cleaned up 5 tests in `tests/ui`
Diffstat (limited to 'tests/ui/or-patterns')
-rw-r--r--tests/ui/or-patterns/lazy-and-or.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/or-patterns/lazy-and-or.rs b/tests/ui/or-patterns/lazy-and-or.rs
new file mode 100644
index 00000000000..3d69553132b
--- /dev/null
+++ b/tests/ui/or-patterns/lazy-and-or.rs
@@ -0,0 +1,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");
+    }
+}