about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-06-18 18:18:15 +1000
committerZalathar <Zalathar@users.noreply.github.com>2024-06-18 21:07:37 +1000
commit9a084e6310671aa0e3e35efb73953eeef8092d7d (patch)
tree52991603f5d6aafa23a2e3bb160f84871f0ac7ee
parent605b61534a226d1d03d9932c9e72fca97a9c8972 (diff)
downloadrust-9a084e6310671aa0e3e35efb73953eeef8092d7d.tar.gz
rust-9a084e6310671aa0e3e35efb73953eeef8092d7d.zip
Add a more thorough test of incorrect/unusal `#[coverage(..)]` syntax
This test reflects the current implementation behaviour, which is not
necessarily the desired behaviour.
-rw-r--r--tests/ui/coverage-attr/bad-syntax.rs58
-rw-r--r--tests/ui/coverage-attr/bad-syntax.stderr78
2 files changed, 136 insertions, 0 deletions
diff --git a/tests/ui/coverage-attr/bad-syntax.rs b/tests/ui/coverage-attr/bad-syntax.rs
new file mode 100644
index 00000000000..8783714992b
--- /dev/null
+++ b/tests/ui/coverage-attr/bad-syntax.rs
@@ -0,0 +1,58 @@
+#![feature(coverage_attribute)]
+
+// Tests the error messages produced (or not produced) by various unusual
+// uses of the `#[coverage(..)]` attribute.
+
+// FIXME(#84605): Multiple coverage attributes with the same value are useless,
+// and should probably produce a diagnostic.
+#[coverage(off)]
+#[coverage(off)]
+fn multiple_consistent() {}
+
+// FIXME(#84605): When there are multiple inconsistent coverage attributes,
+// it's unclear which one will prevail.
+#[coverage(off)]
+#[coverage(on)]
+fn multiple_inconsistent() {}
+
+#[coverage] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn bare_word() {}
+
+// FIXME(#84605): This shows as multiple different errors, one of which suggests
+// writing bare `#[coverage]`, which is not allowed.
+#[coverage = true]
+//~^ ERROR expected `coverage(off)` or `coverage(on)`
+//~| ERROR malformed `coverage` attribute input
+//~| HELP the following are the possible correct uses
+//~| SUGGESTION #[coverage(on|off)]
+fn key_value() {}
+
+#[coverage()] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn list_empty() {}
+
+#[coverage(off, off)] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn list_consistent() {}
+
+#[coverage(off, on)] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn list_inconsistent() {}
+
+#[coverage(bogus)] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn bogus_word() {}
+
+#[coverage(bogus, off)] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn bogus_word_before() {}
+
+#[coverage(off, bogus)] //~ ERROR expected `coverage(off)` or `coverage(on)`
+fn bogus_word_after() {}
+
+#[coverage(off,)]
+fn comma_after() {}
+
+// FIXME(#84605): This shows as multiple different errors.
+#[coverage(,off)]
+//~^ ERROR expected identifier, found `,`
+//~| HELP remove this comma
+//~| ERROR expected `coverage(off)` or `coverage(on)`
+fn comma_before() {}
+
+fn main() {}
diff --git a/tests/ui/coverage-attr/bad-syntax.stderr b/tests/ui/coverage-attr/bad-syntax.stderr
new file mode 100644
index 00000000000..f6181d12a94
--- /dev/null
+++ b/tests/ui/coverage-attr/bad-syntax.stderr
@@ -0,0 +1,78 @@
+error: malformed `coverage` attribute input
+  --> $DIR/bad-syntax.rs:23:1
+   |
+LL | #[coverage = true]
+   | ^^^^^^^^^^^^^^^^^^
+   |
+help: the following are the possible correct uses
+   |
+LL | #[coverage(on|off)]
+   |
+LL | #[coverage]
+   |
+
+error: expected identifier, found `,`
+  --> $DIR/bad-syntax.rs:52:12
+   |
+LL | #[coverage(,off)]
+   |            ^
+   |            |
+   |            expected identifier
+   |            help: remove this comma
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:18:1
+   |
+LL | #[coverage]
+   | ^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:23:1
+   |
+LL | #[coverage = true]
+   | ^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:30:1
+   |
+LL | #[coverage()]
+   | ^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:33:1
+   |
+LL | #[coverage(off, off)]
+   | ^^^^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:36:1
+   |
+LL | #[coverage(off, on)]
+   | ^^^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:39:1
+   |
+LL | #[coverage(bogus)]
+   | ^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:42:1
+   |
+LL | #[coverage(bogus, off)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:45:1
+   |
+LL | #[coverage(off, bogus)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^
+
+error: expected `coverage(off)` or `coverage(on)`
+  --> $DIR/bad-syntax.rs:52:1
+   |
+LL | #[coverage(,off)]
+   | ^^^^^^^^^^^^^^^^^
+
+error: aborting due to 11 previous errors
+