rust/tests/coverage/attr/off-on-sandwich.coverage
Zalathar 5093658632 Add more thorough coverage tests for #[coverage(..)] in nested functions
These tests reflect the current implementation behaviour, which is not
necessarily the desired behaviour.
2024-06-18 21:27:34 +10:00

59 lines
1.9 KiB
Plaintext

LL| |#![feature(coverage_attribute)]
LL| |//@ edition: 2021
LL| |
LL| |// Demonstrates the interaction of `#[coverage(off)]` and `#[coverage(on)]`
LL| |// in nested functions.
LL| |
LL| |// FIXME(#126625): Coverage attributes should apply recursively to nested functions.
LL| |// FIXME(#126626): When an inner (non-closure) function has `#[coverage(off)]`,
LL| |// its lines can still be marked with misleading execution counts from its enclosing
LL| |// function.
LL| |
LL| |#[coverage(off)]
LL| |fn do_stuff() {}
LL| |
LL| |#[coverage(off)]
LL| |fn dense_a() {
LL| | dense_b();
LL| | dense_b();
LL| | #[coverage(on)]
LL| 2| fn dense_b() {
LL| 2| dense_c();
LL| 2| dense_c();
LL| 2| #[coverage(off)]
LL| 2| fn dense_c() {
LL| 2| do_stuff();
LL| 2| }
LL| 2| }
LL| |}
LL| |
LL| |#[coverage(off)]
LL| |fn sparse_a() {
LL| | sparse_b();
LL| | sparse_b();
LL| 2| fn sparse_b() {
LL| 2| sparse_c();
LL| 2| sparse_c();
LL| 2| #[coverage(on)]
LL| 4| fn sparse_c() {
LL| 4| sparse_d();
LL| 4| sparse_d();
LL| 8| fn sparse_d() {
LL| 8| sparse_e();
LL| 8| sparse_e();
LL| 8| #[coverage(off)]
LL| 8| fn sparse_e() {
LL| 8| do_stuff();
LL| 8| }
LL| 8| }
LL| 4| }
LL| 2| }
LL| |}
LL| |
LL| |#[coverage(off)]
LL| |fn main() {
LL| | dense_a();
LL| | sparse_a();
LL| |}