about summary refs log tree commit diff
path: root/tests/coverage/branch/while.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/coverage/branch/while.rs')
-rw-r--r--tests/coverage/branch/while.rs58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/coverage/branch/while.rs b/tests/coverage/branch/while.rs
new file mode 100644
index 00000000000..507815fbecb
--- /dev/null
+++ b/tests/coverage/branch/while.rs
@@ -0,0 +1,58 @@
+#![feature(coverage_attribute)]
+//@ edition: 2021
+//@ compile-flags: -Zcoverage-options=branch
+//@ llvm-cov-flags: --show-branches=count
+
+macro_rules! no_merge {
+    () => {
+        for _ in 0..1 {}
+    };
+}
+
+fn while_cond() {
+    no_merge!();
+
+    let mut a = 8;
+    while a > 0 {
+        a -= 1;
+    }
+}
+
+fn while_cond_not() {
+    no_merge!();
+
+    let mut a = 8;
+    while !(a == 0) {
+        a -= 1;
+    }
+}
+
+fn while_op_and() {
+    no_merge!();
+
+    let mut a = 8;
+    let mut b = 4;
+    while a > 0 && b > 0 {
+        a -= 1;
+        b -= 1;
+    }
+}
+
+fn while_op_or() {
+    no_merge!();
+
+    let mut a = 4;
+    let mut b = 8;
+    while a > 0 || b > 0 {
+        a -= 1;
+        b -= 1;
+    }
+}
+
+#[coverage(off)]
+fn main() {
+    while_cond();
+    while_cond_not();
+    while_op_and();
+    while_op_or();
+}