about summary refs log tree commit diff
path: root/compiler/rustc_span/src
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2021-04-25 13:34:03 -0700
committerRich Kadel <richkadel@google.com>2021-04-27 11:11:56 -0700
commit888d0b4c9691ffcba7cb326a1cd1fc73feb38f57 (patch)
treef9fd7d1e8afa1f610aab6081b1bf06a1de3edf75 /compiler/rustc_span/src
parent1919b3f22706fee0b2c6ac3d42316545900b7734 (diff)
downloadrust-888d0b4c9691ffcba7cb326a1cd1fc73feb38f57.tar.gz
rust-888d0b4c9691ffcba7cb326a1cd1fc73feb38f57.zip
Derived Eq no longer shows uncovered
The Eq trait has a special hidden function. MIR `InstrumentCoverage`
would add this function to the coverage map, but it is never called, so
the `Eq` trait would always appear uncovered.

Fixes: #83601

The fix required creating a new function attribute `no_coverage` to mark
functions that should be ignored by `InstrumentCoverage` and the
coverage `mapgen` (during codegen).

While testing, I also noticed two other issues:

* spanview debug file output ICEd on a function with no body. The
workaround for this is included in this PR.
* `assert_*!()` macro coverage can appear covered if followed by another
`assert_*!()` macro. Normally they appear uncovered. I submitted a new
Issue #84561, and added a coverage test to demonstrate this issue.
Diffstat (limited to 'compiler/rustc_span/src')
-rw-r--r--compiler/rustc_span/src/symbol.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs
index 4be187c5208..cb6c72b1317 100644
--- a/compiler/rustc_span/src/symbol.rs
+++ b/compiler/rustc_span/src/symbol.rs
@@ -781,6 +781,7 @@ symbols! {
         no,
         no_builtins,
         no_core,
+        no_coverage,
         no_crate_inject,
         no_debug,
         no_default_passes,