diff options
| author | Rich Kadel <richkadel@google.com> | 2021-04-26 21:25:30 -0700 |
|---|---|---|
| committer | Rich Kadel <richkadel@google.com> | 2021-04-27 17:12:51 -0700 |
| commit | 3a5df48021b3d29ca55a712d9677cfe043966c6e (patch) | |
| tree | 4f006dfe196f125f327eb7d126ebee09cdc702a4 /src | |
| parent | 888d0b4c9691ffcba7cb326a1cd1fc73feb38f57 (diff) | |
| download | rust-3a5df48021b3d29ca55a712d9677cfe043966c6e.tar.gz rust-3a5df48021b3d29ca55a712d9677cfe043966c6e.zip | |
adds feature gating of `no_coverage` at either crate- or function-level
Diffstat (limited to 'src')
8 files changed, 93 insertions, 60 deletions
diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.issue-84561.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.issue-84561.txt deleted file mode 100644 index faafa828817..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.issue-84561.txt +++ /dev/null @@ -1,34 +0,0 @@ - 1| |// FIXME(#84561): function-like macros produce unintuitive coverage results. - 2| |// This test demonstrates some of the problems. - 3| | - 4| 9|#[derive(Debug, PartialEq, Eq)] - ^5 - ------------------ - | <issue_84561::Foo as core::cmp::PartialEq>::eq: - | 4| 9|#[derive(Debug, PartialEq, Eq)] - ------------------ - | Unexecuted instantiation: <issue_84561::Foo as core::cmp::PartialEq>::ne - ------------------ - 5| |struct Foo(u32); - 6| | - 7| 1|fn main() { - 8| 1| let bar = Foo(1); - 9| 0| assert_eq!(bar, Foo(1)); - 10| 1| let baz = Foo(0); - 11| 0| assert_ne!(baz, Foo(1)); - 12| 1| println!("{:?}", Foo(1)); - 13| 1| println!("{:?}", bar); - 14| 1| println!("{:?}", baz); - 15| | - 16| 1| assert_eq!(Foo(1), Foo(1)); - 17| 1| assert_ne!(Foo(0), Foo(1)); - 18| 0| assert_eq!(Foo(2), Foo(2)); - 19| 1| let bar = Foo(1); - 20| 1| assert_ne!(Foo(0), Foo(3)); - 21| 1| assert_ne!(Foo(0), Foo(4)); - 22| 1| assert_eq!(Foo(3), Foo(3)); - 23| 0| assert_ne!(Foo(0), Foo(5)); - 24| 1| println!("{:?}", bar); - 25| 1| println!("{:?}", Foo(1)); - 26| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_crate.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_crate.txt new file mode 100644 index 00000000000..c4a7b0cc7e9 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_crate.txt @@ -0,0 +1,18 @@ + 1| |// Enables `no_coverage` on the entire crate + 2| |#![feature(no_coverage)] + 3| | + 4| |#[no_coverage] + 5| |fn do_not_add_coverage_1() { + 6| | println!("called but not covered"); + 7| |} + 8| | + 9| |#[no_coverage] + 10| |fn do_not_add_coverage_2() { + 11| | println!("called but not covered"); + 12| |} + 13| | + 14| 1|fn main() { + 15| 1| do_not_add_coverage_1(); + 16| 1| do_not_add_coverage_2(); + 17| 1|} + diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_func.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_func.txt new file mode 100644 index 00000000000..16eaf7c858c --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_func.txt @@ -0,0 +1,19 @@ + 1| |// Enables `no_coverage` on individual functions + 2| | + 3| |#[feature(no_coverage)] + 4| |#[no_coverage] + 5| |fn do_not_add_coverage_1() { + 6| | println!("called but not covered"); + 7| |} + 8| | + 9| |#[no_coverage] + 10| |#[feature(no_coverage)] + 11| |fn do_not_add_coverage_2() { + 12| | println!("called but not covered"); + 13| |} + 14| | + 15| 1|fn main() { + 16| 1| do_not_add_coverage_1(); + 17| 1| do_not_add_coverage_2(); + 18| 1|} + diff --git a/src/test/run-make-fulldeps/coverage/issue-84561.rs b/src/test/run-make-fulldeps/coverage/issue-84561.rs deleted file mode 100644 index dc183685e3d..00000000000 --- a/src/test/run-make-fulldeps/coverage/issue-84561.rs +++ /dev/null @@ -1,26 +0,0 @@ -// FIXME(#84561): function-like macros produce unintuitive coverage results. -// This test demonstrates some of the problems. - -#[derive(Debug, PartialEq, Eq)] -struct Foo(u32); - -fn main() { - let bar = Foo(1); - assert_eq!(bar, Foo(1)); - let baz = Foo(0); - assert_ne!(baz, Foo(1)); - println!("{:?}", Foo(1)); - println!("{:?}", bar); - println!("{:?}", baz); - - assert_eq!(Foo(1), Foo(1)); - assert_ne!(Foo(0), Foo(1)); - assert_eq!(Foo(2), Foo(2)); - let bar = Foo(1); - assert_ne!(Foo(0), Foo(3)); - assert_ne!(Foo(0), Foo(4)); - assert_eq!(Foo(3), Foo(3)); - assert_ne!(Foo(0), Foo(5)); - println!("{:?}", bar); - println!("{:?}", Foo(1)); -} diff --git a/src/test/run-make-fulldeps/coverage/no_cov_crate.rs b/src/test/run-make-fulldeps/coverage/no_cov_crate.rs new file mode 100644 index 00000000000..300570db7e8 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage/no_cov_crate.rs @@ -0,0 +1,17 @@ +// Enables `no_coverage` on the entire crate +#![feature(no_coverage)] + +#[no_coverage] +fn do_not_add_coverage_1() { + println!("called but not covered"); +} + +#[no_coverage] +fn do_not_add_coverage_2() { + println!("called but not covered"); +} + +fn main() { + do_not_add_coverage_1(); + do_not_add_coverage_2(); +} diff --git a/src/test/run-make-fulldeps/coverage/no_cov_func.rs b/src/test/run-make-fulldeps/coverage/no_cov_func.rs new file mode 100644 index 00000000000..e19a2c4a872 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage/no_cov_func.rs @@ -0,0 +1,18 @@ +// Enables `no_coverage` on individual functions + +#[feature(no_coverage)] +#[no_coverage] +fn do_not_add_coverage_1() { + println!("called but not covered"); +} + +#[no_coverage] +#[feature(no_coverage)] +fn do_not_add_coverage_2() { + println!("called but not covered"); +} + +fn main() { + do_not_add_coverage_1(); + do_not_add_coverage_2(); +} diff --git a/src/test/ui/feature-gates/feature-gate-no_coverage.rs b/src/test/ui/feature-gates/feature-gate-no_coverage.rs new file mode 100644 index 00000000000..c6b79f9a431 --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-no_coverage.rs @@ -0,0 +1,8 @@ +#![crate_type = "lib"] + +#[no_coverage] +#[feature(no_coverage)] // does not have to be enabled before `#[no_coverage]` +fn no_coverage_is_enabled_on_this_function() {} + +#[no_coverage] //~ ERROR the `#[no_coverage]` attribute is an experimental feature +fn requires_feature_no_coverage() {} diff --git a/src/test/ui/feature-gates/feature-gate-no_coverage.stderr b/src/test/ui/feature-gates/feature-gate-no_coverage.stderr new file mode 100644 index 00000000000..04627be4aaf --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-no_coverage.stderr @@ -0,0 +1,13 @@ +error[E0658]: the `#[no_coverage]` attribute is an experimental feature + --> $DIR/feature-gate-no_coverage.rs:7:1 + | +LL | #[no_coverage] + | ^^^^^^^^^^^^^^ + | + = note: see issue #84605 <https://github.com/rust-lang/rust/issues/84605> for more information + = help: add `#![feature(no_coverage)]` to the crate attributes to enable + = help: or, alternatively, add `#[feature(no_coverage)]` to the function + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0658`. |
