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| |}