about summary refs log tree commit diff
path: root/tests/coverage/macro_in_closure.rs
diff options
context:
space:
mode:
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();
+}