about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2021-04-26 21:25:30 -0700
committerRich Kadel <richkadel@google.com>2021-04-27 17:12:51 -0700
commit3a5df48021b3d29ca55a712d9677cfe043966c6e (patch)
tree4f006dfe196f125f327eb7d126ebee09cdc702a4 /src
parent888d0b4c9691ffcba7cb326a1cd1fc73feb38f57 (diff)
downloadrust-3a5df48021b3d29ca55a712d9677cfe043966c6e.tar.gz
rust-3a5df48021b3d29ca55a712d9677cfe043966c6e.zip
adds feature gating of `no_coverage` at either crate- or function-level
Diffstat (limited to 'src')
-rw-r--r--src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.issue-84561.txt34
-rw-r--r--src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_crate.txt18
-rw-r--r--src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.no_cov_func.txt19
-rw-r--r--src/test/run-make-fulldeps/coverage/issue-84561.rs26
-rw-r--r--src/test/run-make-fulldeps/coverage/no_cov_crate.rs17
-rw-r--r--src/test/run-make-fulldeps/coverage/no_cov_func.rs18
-rw-r--r--src/test/ui/feature-gates/feature-gate-no_coverage.rs8
-rw-r--r--src/test/ui/feature-gates/feature-gate-no_coverage.stderr13
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`.