2024-06-18 10:02:21 +00:00
|
|
|
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();
|
2024-06-22 06:34:24 +00:00
|
|
|
LL| | fn sparse_b() {
|
|
|
|
LL| | sparse_c();
|
|
|
|
LL| | sparse_c();
|
|
|
|
LL| | #[coverage(on)]
|
2024-06-18 10:02:21 +00:00
|
|
|
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| }
|
2024-06-22 06:34:24 +00:00
|
|
|
LL| | }
|
2024-06-18 10:02:21 +00:00
|
|
|
LL| |}
|
|
|
|
LL| |
|
|
|
|
LL| |#[coverage(off)]
|
|
|
|
LL| |fn main() {
|
|
|
|
LL| | dense_a();
|
|
|
|
LL| | sparse_a();
|
|
|
|
LL| |}
|
|
|
|
|