Skip to main content

crap4rust/coverage_io/
llvm_cov_provider.rs

1// Copyright 2026 Umberto Gotti <umberto.gotti@umbertogotti.dev>
2// Licensed under the MIT License
3// SPDX-License-Identifier: MIT
4
5use anyhow::Result;
6
7use crate::coverage_io::coverage::{ensure_coverage_path, load_coverage_records};
8use crate::coverage_io::coverage_record::CoverageRecord;
9use crate::invocation::config::Config;
10use crate::invocation::package_context::PackageContext;
11use crate::traits::coverage_provider::CoverageProvider;
12
13#[derive(Debug, Clone, Copy, Default)]
14pub struct LlvmCovProvider;
15
16impl LlvmCovProvider {
17    #[must_use]
18    pub const fn new() -> Self {
19        Self
20    }
21}
22
23impl CoverageProvider for LlvmCovProvider {
24    fn provide(&self, config: &Config, packages: &[PackageContext]) -> Result<Vec<CoverageRecord>> {
25        let coverage_path = ensure_coverage_path(config, packages)?;
26        load_coverage_records(&coverage_path)
27    }
28}