about summary refs log tree commit diff
path: root/tests/run-coverage/closure_bug.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2023-09-18 22:19:16 +1000
committerZalathar <Zalathar@users.noreply.github.com>2023-09-18 22:33:05 +1000
commita4cb31bb58112b65b4313a2764addf5b72ff7a68 (patch)
treed71ccfa9749b8db2c11e906a0759a95ece8ac091 /tests/run-coverage/closure_bug.rs
parent4690f97099c2f01a07a8fa272e94e3e5cba61f12 (diff)
downloadrust-a4cb31bb58112b65b4313a2764addf5b72ff7a68.tar.gz
rust-a4cb31bb58112b65b4313a2764addf5b72ff7a68.zip
coverage: Regression test for inconsistent handling of closure spans
Diffstat (limited to 'tests/run-coverage/closure_bug.rs')
-rw-r--r--tests/run-coverage/closure_bug.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/run-coverage/closure_bug.rs b/tests/run-coverage/closure_bug.rs
new file mode 100644
index 00000000000..739bc5f0b51
--- /dev/null
+++ b/tests/run-coverage/closure_bug.rs
@@ -0,0 +1,44 @@
+// Regression test for #115930.
+// All of these closures are identical, and should produce identical output in
+// the coverage report. However, an unstable sort was causing them to be treated
+// inconsistently when preparing coverage spans.
+
+fn main() {
+    let truthy = std::env::args().len() == 1;
+
+    let a
+        =
+        |
+        |
+        if truthy { true } else { false };
+
+    a();
+    if truthy { a(); }
+
+    let b
+        =
+        |
+        |
+        if truthy { true } else { false };
+
+    b();
+    if truthy { b(); }
+
+    let c
+        =
+        |
+        |
+        if truthy { true } else { false };
+
+    c();
+    if truthy { c(); }
+
+    let d
+        =
+        |
+        |
+        if truthy { true } else { false };
+
+    d();
+    if truthy { d(); }
+}