about summary refs log tree commit diff
path: root/tests/coverage/macro_in_closure.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-01-22 13:56:37 +1100
committerZalathar <Zalathar@users.noreply.github.com>2024-02-05 10:07:18 +1100
commitfe420dc46ecf988eb13c34526feea18fd8daef6b (patch)
treedde3ad4b694a375c576b4bffeede672807e95a0c /tests/coverage/macro_in_closure.rs
parent268dbbbc4b3fd71c5f360a4d0728295252430b5b (diff)
downloadrust-fe420dc46ecf988eb13c34526feea18fd8daef6b.tar.gz
rust-fe420dc46ecf988eb13c34526feea18fd8daef6b.zip
coverage: Test for closure body that is a single bang-macro
Diffstat (limited to 'tests/coverage/macro_in_closure.rs')
-rw-r--r--tests/coverage/macro_in_closure.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/coverage/macro_in_closure.rs b/tests/coverage/macro_in_closure.rs
new file mode 100644
index 00000000000..6948c9079c0
--- /dev/null
+++ b/tests/coverage/macro_in_closure.rs
@@ -0,0 +1,17 @@
+#![feature(coverage_attribute)]
+// edition: 2021
+
+// If a closure body consists entirely of a single bang-macro invocation, the
+// body span ends up inside the macro-expansion, so we need to un-expand it
+// back to the declaration site.
+static NO_BLOCK: fn() = || println!("hello");
+
+static WITH_BLOCK: fn() = || {
+    println!("hello");
+};
+
+#[coverage(off)]
+fn main() {
+    NO_BLOCK();
+    WITH_BLOCK();
+}