Function rustc_mir_transform::coverage::make_code_region

source ·
fn make_code_region(
    source_map: &SourceMap,
    file_name: Symbol,
    span: Span,
    body_span: Span
) -> Option<CodeRegion>
Expand description

Convert the Span into its file name, start line and column, and end line and column.

Line numbers and column numbers are 1-based. Unlike most column numbers emitted by the compiler, these column numbers are denoted in bytes, because that’s what LLVM’s llvm-cov tool expects to see in coverage maps.

Returns None if the conversion failed for some reason. This shouldn’t happen, but it’s hard to rule out entirely (especially in the presence of complex macros or other expansions), and if it does happen then skipping a span or function is better than an ICE or llvm-cov failure that the user might have no way to avoid.