#![feature(coverage_attribute)] //@ edition: 2021 //@ compile-flags: -Zcoverage-options=branch //@ llvm-cov-flags: --show-branches=count // When instrumenting match expressions for branch coverage, make sure we don't // cause an ICE or produce weird coverage output for matches with <2 arms. // Helper macro to prevent start-of-function spans from being merged into // spans on the lines we care about. macro_rules! no_merge { () => { for _ in 0..1 {} }; } enum Uninhabited {} enum Trivial { Value, } fn _uninhabited(x: Uninhabited) { no_merge!(); match x {} consume("done"); } fn trivial(x: Trivial) { no_merge!(); match x { Trivial::Value => consume("trivial"), } consume("done"); } #[coverage(off)] fn consume(x: T) { core::hint::black_box(x); } #[coverage(off)] fn main() { trivial(Trivial::Value); }