@0,3,4⦊fn j(x: u8) { // non-async versions of `c()`, `d()`, and `f()` to make it similar to async `i()`. fn c(x: u8) -> u8 { if x == 8 { 1 // This line appears covered, but the 1-character expression span covering the `1` // is not executed. (`llvm-cov show` displays a `^0` below the `1` ). This is because // `fn j()` executes the open brace for the funciton body, followed by the function's // first executable statement, `match x`. Inner function declarations are not // "visible" to the MIR for `j()`, so the code region counts all lines between the // open brace and the first statement as executed, which is, in a sense, true. // `llvm-cov show` overcomes this kind of situation by showing the actual counts // of the enclosed coverages, (that is, the `1` expression was not executed, and // accurately displays a `0`). } else { 0 } } fn d() -> u8 { 1 } fn f() -> u8 { 1 } match x⦉@0,3,4 { @5,7⦊y⦉@5,7 if @0,3,4⦊c(x) == y + 1⦉@0,3,4 => @5,7⦊{ d(); }⦉@5,7 @10⦊y⦉@10 if @1,8,9⦊f() == y + 1⦉@1,8,9 => @10⦊()⦉@10, _ => @2⦊()⦉@2, } }@12⦊⦉@12