mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
![]() This code was calling `sort_unstable_by`, but failed to impose a total order on the initial spans. That resulted in unpredictable handling of closure spans, producing inconsistencies in the coverage maps and in user-visible coverage reports. This patch fixes the problem by always sorting closure spans before otherwise-identical non-closure spans, and also switches to a stable sort in case the ordering is still not total. |
||
---|---|---|
.. | ||
status-quo | ||
if.cov-map | ||
if.rs | ||
long_and_wide.cov-map | ||
long_and_wide.rs | ||
README.md | ||
trivial.cov-map | ||
trivial.rs |
The tests in ./status-quo
were copied from tests/run-coverage
in order to
capture the current behavior of the instrumentor on non-trivial programs.
The actual mappings have not been closely inspected.
Maintenance note
These tests can be sensitive to small changes in MIR spans or MIR control flow, especially in HIR-to-MIR lowering or MIR optimizations.
If you haven't touched the coverage code directly, and the run-coverage
test
suite still works, then it should usually be OK to just --bless
these
coverage mapping tests as necessary, without worrying too much about the exact
changes.