coverage: Bless coverage attribute tests
This commit is contained in:
parent
b7c057c9b2
commit
1852141219
@ -1,58 +1,45 @@
|
|||||||
#![feature(coverage_attribute)]
|
#![feature(coverage_attribute)]
|
||||||
|
//@ edition: 2021
|
||||||
|
|
||||||
// Tests the error messages produced (or not produced) by various unusual
|
// Tests the error messages produced (or not produced) by various unusual
|
||||||
// uses of the `#[coverage(..)]` attribute.
|
// uses of the `#[coverage(..)]` attribute.
|
||||||
|
|
||||||
// FIXME(#126658): Multiple coverage attributes with the same value are useless,
|
#[coverage(off)] //~ ERROR multiple `coverage` attributes
|
||||||
// and should probably produce a diagnostic.
|
|
||||||
#[coverage(off)]
|
|
||||||
#[coverage(off)]
|
#[coverage(off)]
|
||||||
fn multiple_consistent() {}
|
fn multiple_consistent() {}
|
||||||
|
|
||||||
// FIXME(#126658): When there are multiple inconsistent coverage attributes,
|
#[coverage(off)] //~ ERROR multiple `coverage` attributes
|
||||||
// it's unclear which one will prevail.
|
|
||||||
#[coverage(off)]
|
|
||||||
#[coverage(on)]
|
#[coverage(on)]
|
||||||
fn multiple_inconsistent() {}
|
fn multiple_inconsistent() {}
|
||||||
|
|
||||||
#[coverage] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage] //~ ERROR malformed `coverage` attribute input
|
||||||
fn bare_word() {}
|
fn bare_word() {}
|
||||||
|
|
||||||
// FIXME(#126658): This shows as multiple different errors, one of which suggests
|
#[coverage = true] //~ ERROR malformed `coverage` attribute input
|
||||||
// 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() {}
|
fn key_value() {}
|
||||||
|
|
||||||
#[coverage()] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage()] //~ ERROR malformed `coverage` attribute input
|
||||||
fn list_empty() {}
|
fn list_empty() {}
|
||||||
|
|
||||||
#[coverage(off, off)] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(off, off)] //~ ERROR malformed `coverage` attribute input
|
||||||
fn list_consistent() {}
|
fn list_consistent() {}
|
||||||
|
|
||||||
#[coverage(off, on)] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(off, on)] //~ ERROR malformed `coverage` attribute input
|
||||||
fn list_inconsistent() {}
|
fn list_inconsistent() {}
|
||||||
|
|
||||||
#[coverage(bogus)] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(bogus)] //~ ERROR malformed `coverage` attribute input
|
||||||
fn bogus_word() {}
|
fn bogus_word() {}
|
||||||
|
|
||||||
#[coverage(bogus, off)] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(bogus, off)] //~ ERROR malformed `coverage` attribute input
|
||||||
fn bogus_word_before() {}
|
fn bogus_word_before() {}
|
||||||
|
|
||||||
#[coverage(off, bogus)] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(off, bogus)] //~ ERROR malformed `coverage` attribute input
|
||||||
fn bogus_word_after() {}
|
fn bogus_word_after() {}
|
||||||
|
|
||||||
#[coverage(off,)]
|
#[coverage(off,)] // (OK!)
|
||||||
fn comma_after() {}
|
fn comma_after() {}
|
||||||
|
|
||||||
// FIXME(#126658): This shows as multiple different errors.
|
#[coverage(,off)] //~ ERROR expected identifier, found `,`
|
||||||
#[coverage(,off)]
|
|
||||||
//~^ ERROR expected identifier, found `,`
|
|
||||||
//~| HELP remove this comma
|
|
||||||
//~| ERROR expected `coverage(off)` or `coverage(on)`
|
|
||||||
fn comma_before() {}
|
fn comma_before() {}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,18 +1,109 @@
|
|||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/bad-syntax.rs:23:1
|
--> $DIR/bad-syntax.rs:15:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:18:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = true]
|
LL | #[coverage = true]
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:21:1
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage()]
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:24:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(off, off)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:27:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(off, on)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:30:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(bogus)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:33:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(bogus, off)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/bad-syntax.rs:36:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(off, bogus)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
error: expected identifier, found `,`
|
error: expected identifier, found `,`
|
||||||
--> $DIR/bad-syntax.rs:52:12
|
--> $DIR/bad-syntax.rs:42:12
|
||||||
|
|
|
|
||||||
LL | #[coverage(,off)]
|
LL | #[coverage(,off)]
|
||||||
| ^
|
| ^
|
||||||
@ -20,59 +111,29 @@ LL | #[coverage(,off)]
|
|||||||
| expected identifier
|
| expected identifier
|
||||||
| help: remove this comma
|
| help: remove this comma
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: multiple `coverage` attributes
|
||||||
--> $DIR/bad-syntax.rs:18:1
|
--> $DIR/bad-syntax.rs:7:1
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||||
|
|
|
||||||
|
note: attribute also specified here
|
||||||
|
--> $DIR/bad-syntax.rs:8:1
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: multiple `coverage` attributes
|
||||||
--> $DIR/bad-syntax.rs:23:1
|
--> $DIR/bad-syntax.rs:11:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = true]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
|
||||||
--> $DIR/bad-syntax.rs:30:1
|
|
||||||
|
|
|
|
||||||
LL | #[coverage()]
|
note: attribute also specified here
|
||||||
| ^^^^^^^^^^^^^
|
--> $DIR/bad-syntax.rs:12:1
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
|
||||||
--> $DIR/bad-syntax.rs:33:1
|
|
||||||
|
|
|
|
||||||
LL | #[coverage(off, off)]
|
LL | #[coverage(on)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
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
|
error: aborting due to 11 previous errors
|
||||||
|
|
||||||
|
@ -8,57 +8,62 @@
|
|||||||
// and in places that cannot have a coverage attribute, to demonstrate the
|
// and in places that cannot have a coverage attribute, to demonstrate the
|
||||||
// interaction between multiple errors.
|
// interaction between multiple errors.
|
||||||
|
|
||||||
// FIXME(#126658): The error messages for using this syntax are inconsistent
|
#[coverage = "off"]
|
||||||
// with the error message in other cases. They also sometimes appear together
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
// with other errors, and they suggest using the incorrect `#[coverage]` syntax.
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
|
|
||||||
#[coverage = "off"] //~ ERROR malformed `coverage` attribute input
|
|
||||||
mod my_mod {}
|
mod my_mod {}
|
||||||
|
|
||||||
mod my_mod_inner {
|
mod my_mod_inner {
|
||||||
#![coverage = "off"] //~ ERROR malformed `coverage` attribute input
|
#![coverage = "off"]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
struct MyStruct;
|
struct MyStruct;
|
||||||
|
|
||||||
#[coverage = "off"] //~ ERROR malformed `coverage` attribute input
|
#[coverage = "off"]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
impl MyStruct {
|
impl MyStruct {
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32 = 7;
|
const X: u32 = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage = "off"] //~ ERROR malformed `coverage` attribute input
|
#[coverage = "off"]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
trait MyTrait {
|
trait MyTrait {
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32;
|
const X: u32;
|
||||||
|
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
type T;
|
type T;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage = "off"] //~ ERROR malformed `coverage` attribute input
|
#[coverage = "off"]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
impl MyTrait for MyStruct {
|
impl MyTrait for MyStruct {
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32 = 8;
|
const X: u32 = 8;
|
||||||
|
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR `#[coverage]` must be applied to coverable code
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
type T = ();
|
type T = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage = "off"]
|
#[coverage = "off"]
|
||||||
//~^ ERROR expected `coverage(off)` or `coverage(on)`
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
//~| ERROR malformed `coverage` attribute input
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:15:1
|
--> $DIR/name-value.rs:11:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
| ~~~~~~~~~~~~~~~~~~~
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
| ~~~~~~~~~~~
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:19:5
|
--> $DIR/name-value.rs:17:5
|
||||||
|
|
|
|
||||||
LL | #![coverage = "off"]
|
LL | #![coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #![coverage(on|off)]
|
LL | #![coverage(off)]
|
||||||
| ~~~~~~~~~~~~~~~~~~~~
|
|
|
||||||
LL | #![coverage]
|
LL | #![coverage(on)]
|
||||||
| ~~~~~~~~~~~~
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:22:1
|
--> $DIR/name-value.rs:22:1
|
||||||
@ -32,22 +32,22 @@ LL | #[coverage = "off"]
|
|||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:29:5
|
--> $DIR/name-value.rs:31:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
@ -58,162 +58,220 @@ LL | #[coverage = "off"]
|
|||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
| ~~~~~~~~~~~~~~~~~~~
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
| ~~~~~~~~~~~
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:37:5
|
--> $DIR/name-value.rs:41:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:42:5
|
--> $DIR/name-value.rs:46:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:35:1
|
--> $DIR/name-value.rs:37:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
| ~~~~~~~~~~~~~~~~~~~
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
| ~~~~~~~~~~~
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:50:5
|
--> $DIR/name-value.rs:56:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:55:5
|
--> $DIR/name-value.rs:61:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:48:1
|
--> $DIR/name-value.rs:52:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
| ~~~~~~~~~~~~~~~~~~~
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
| ~~~~~~~~~~~
|
|
|
||||||
|
|
||||||
error: malformed `coverage` attribute input
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/name-value.rs:61:1
|
--> $DIR/name-value.rs:67:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: the following are the possible correct uses
|
help: the following are the possible correct uses
|
||||||
|
|
|
|
||||||
LL | #[coverage(on|off)]
|
LL | #[coverage(off)]
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage(on)]
|
||||||
|
|
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/name-value.rs:11:1
|
||||||
|
|
|
||||||
|
LL | #[coverage = "off"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | mod my_mod {}
|
||||||
|
| ------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/name-value.rs:17:5
|
||||||
|
|
|
||||||
|
LL | / mod my_mod_inner {
|
||||||
|
LL | | #![coverage = "off"]
|
||||||
|
| | ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:22:1
|
--> $DIR/name-value.rs:22:1
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | struct MyStruct;
|
LL | struct MyStruct;
|
||||||
| ---------------- not coverable code
|
| ---------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:37:5
|
--> $DIR/name-value.rs:27:1
|
||||||
|
|
|
||||||
|
LL | #[coverage = "off"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / impl MyStruct {
|
||||||
|
LL | | #[coverage = "off"]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | const X: u32 = 7;
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/name-value.rs:37:1
|
||||||
|
|
|
||||||
|
LL | #[coverage = "off"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / trait MyTrait {
|
||||||
|
LL | | #[coverage = "off"]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
... |
|
||||||
|
LL | | type T;
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/name-value.rs:52:1
|
||||||
|
|
|
||||||
|
LL | #[coverage = "off"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / impl MyTrait for MyStruct {
|
||||||
|
LL | | #[coverage = "off"]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
... |
|
||||||
|
LL | | type T = ();
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/name-value.rs:41:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | const X: u32;
|
LL | const X: u32;
|
||||||
| ------------- not coverable code
|
| ------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:42:5
|
--> $DIR/name-value.rs:46:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | type T;
|
LL | type T;
|
||||||
| ------- not coverable code
|
| ------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:29:5
|
--> $DIR/name-value.rs:31:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | const X: u32 = 7;
|
LL | const X: u32 = 7;
|
||||||
| ----------------- not coverable code
|
| ----------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:50:5
|
--> $DIR/name-value.rs:56:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | const X: u32 = 8;
|
LL | const X: u32 = 8;
|
||||||
| ----------------- not coverable code
|
| ----------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/name-value.rs:55:5
|
--> $DIR/name-value.rs:61:5
|
||||||
|
|
|
|
||||||
LL | #[coverage = "off"]
|
LL | #[coverage = "off"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
...
|
...
|
||||||
LL | type T = ();
|
LL | type T = ();
|
||||||
| ------------ not coverable code
|
| ------------ not a function or closure
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: aborting due to 23 previous errors
|
||||||
--> $DIR/name-value.rs:61:1
|
|
||||||
|
|
|
||||||
LL | #[coverage = "off"]
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
error: aborting due to 19 previous errors
|
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0788`.
|
For more information about this error, try `rustc --explain E0788`.
|
||||||
|
@ -2,54 +2,48 @@
|
|||||||
#![feature(coverage_attribute)]
|
#![feature(coverage_attribute)]
|
||||||
#![feature(impl_trait_in_assoc_type)]
|
#![feature(impl_trait_in_assoc_type)]
|
||||||
#![warn(unused_attributes)]
|
#![warn(unused_attributes)]
|
||||||
#![coverage(off)]
|
#![coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
|
||||||
|
|
||||||
#[coverage(off)]
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
|
||||||
trait Trait {
|
trait Trait {
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32;
|
const X: u32;
|
||||||
|
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
type T;
|
type T;
|
||||||
|
|
||||||
type U;
|
type U;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage(off)]
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
|
||||||
impl Trait for () {
|
impl Trait for () {
|
||||||
const X: u32 = 0;
|
const X: u32 = 0;
|
||||||
|
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
type T = Self;
|
type T = Self;
|
||||||
|
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
type U = impl Trait; //~ ERROR unconstrained opaque type
|
type U = impl Trait; //~ ERROR unconstrained opaque type
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
static X: u32;
|
static X: u32;
|
||||||
|
|
||||||
#[coverage(off)] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
type T;
|
type T;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage(off)]
|
#[coverage(off)]
|
||||||
fn main() {
|
fn main() {
|
||||||
#[coverage(off)]
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN `#[coverage]` may only be applied to function definitions
|
|
||||||
let _ = ();
|
let _ = ();
|
||||||
|
|
||||||
match () {
|
match () {
|
||||||
#[coverage(off)]
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN `#[coverage]` may only be applied to function definitions
|
|
||||||
() => (),
|
() => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage(off)]
|
#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
|
||||||
//~^ WARN `#[coverage]` may only be applied to function definitions
|
|
||||||
return ();
|
return ();
|
||||||
}
|
}
|
||||||
|
@ -1,101 +1,116 @@
|
|||||||
warning: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:8:1
|
--> $DIR/no-coverage.rs:7:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
LL | / trait Trait {
|
||||||
note: the lint level is defined here
|
LL | | #[coverage(off)]
|
||||||
--> $DIR/no-coverage.rs:4:9
|
LL | | const X: u32;
|
||||||
|
|
... |
|
||||||
LL | #![warn(unused_attributes)]
|
LL | | type U;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
warning: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:20:1
|
--> $DIR/no-coverage.rs:18:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
LL | / impl Trait for () {
|
||||||
|
LL | | const X: u32 = 0;
|
||||||
|
LL | |
|
||||||
|
LL | | #[coverage(off)]
|
||||||
|
... |
|
||||||
|
LL | | type U = impl Trait;
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
warning: `#[coverage]` may only be applied to function definitions
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:42:5
|
--> $DIR/no-coverage.rs:39:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
LL | let _ = ();
|
||||||
|
| ----------- not a function or closure
|
||||||
|
|
||||||
warning: `#[coverage]` may only be applied to function definitions
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:47:9
|
--> $DIR/no-coverage.rs:43:9
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
LL | () => (),
|
||||||
|
| -------- not a function or closure
|
||||||
|
|
||||||
warning: `#[coverage]` may only be applied to function definitions
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:52:5
|
--> $DIR/no-coverage.rs:47:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
LL | return ();
|
||||||
|
| --------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:11:5
|
--> $DIR/no-coverage.rs:9:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | const X: u32;
|
LL | const X: u32;
|
||||||
| ------------- not coverable code
|
| ------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:14:5
|
--> $DIR/no-coverage.rs:12:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | type T;
|
LL | type T;
|
||||||
| ------- not coverable code
|
| ------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:25:5
|
--> $DIR/no-coverage.rs:22:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | type T = Self;
|
LL | type T = Self;
|
||||||
| -------------- not coverable code
|
| -------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:28:5
|
--> $DIR/no-coverage.rs:25:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | type U = impl Trait;
|
LL | type U = impl Trait;
|
||||||
| -------------------- not coverable code
|
| -------------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:33:5
|
--> $DIR/no-coverage.rs:30:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | static X: u32;
|
LL | static X: u32;
|
||||||
| -------------- not coverable code
|
| -------------- not a function or closure
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:36:5
|
--> $DIR/no-coverage.rs:33:5
|
||||||
|
|
|
|
||||||
LL | #[coverage(off)]
|
LL | #[coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
LL | type T;
|
LL | type T;
|
||||||
| ------- not coverable code
|
| ------- not a function or closure
|
||||||
|
|
||||||
warning: `#[coverage]` does not propagate into items and must be applied to the contained functions directly
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
--> $DIR/no-coverage.rs:5:1
|
--> $DIR/no-coverage.rs:5:1
|
||||||
|
|
|
|
||||||
LL | #![coverage(off)]
|
LL | #![coverage(off)]
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^ not a function or closure
|
||||||
|
|
||||||
error: unconstrained opaque type
|
error: unconstrained opaque type
|
||||||
--> $DIR/no-coverage.rs:29:14
|
--> $DIR/no-coverage.rs:26:14
|
||||||
|
|
|
|
||||||
LL | type U = impl Trait;
|
LL | type U = impl Trait;
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `U` must be used in combination with a concrete type within the same impl
|
= note: `U` must be used in combination with a concrete type within the same impl
|
||||||
|
|
||||||
error: aborting due to 7 previous errors; 6 warnings emitted
|
error: aborting due to 13 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0788`.
|
For more information about this error, try `rustc --explain E0788`.
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
// Check that yes/no in `#[coverage(yes)]` and `#[coverage(no)]` must be bare
|
// Check that yes/no in `#[coverage(yes)]` and `#[coverage(no)]` must be bare
|
||||||
// words, not part of a more complicated substructure.
|
// words, not part of a more complicated substructure.
|
||||||
|
|
||||||
#[coverage(yes(milord))] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(yes(milord))] //~ ERROR malformed `coverage` attribute input
|
||||||
fn yes_list() {}
|
fn yes_list() {}
|
||||||
|
|
||||||
#[coverage(no(milord))] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(no(milord))] //~ ERROR malformed `coverage` attribute input
|
||||||
fn no_list() {}
|
fn no_list() {}
|
||||||
|
|
||||||
#[coverage(yes = "milord")] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(yes = "milord")] //~ ERROR malformed `coverage` attribute input
|
||||||
fn yes_key() {}
|
fn yes_key() {}
|
||||||
|
|
||||||
#[coverage(no = "milord")] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage(no = "milord")] //~ ERROR malformed `coverage` attribute input
|
||||||
fn no_key() {}
|
fn no_key() {}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,26 +1,54 @@
|
|||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/subword.rs:7:1
|
--> $DIR/subword.rs:7:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(yes(milord))]
|
LL | #[coverage(yes(milord))]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/subword.rs:10:1
|
--> $DIR/subword.rs:10:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(no(milord))]
|
LL | #[coverage(no(milord))]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/subword.rs:13:1
|
--> $DIR/subword.rs:13:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(yes = "milord")]
|
LL | #[coverage(yes = "milord")]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/subword.rs:16:1
|
--> $DIR/subword.rs:16:1
|
||||||
|
|
|
|
||||||
LL | #[coverage(no = "milord")]
|
LL | #[coverage(no = "milord")]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
| ~~~~~~~~~~~~~~~~
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
@ -8,47 +8,62 @@
|
|||||||
// and in places that cannot have a coverage attribute, to demonstrate the
|
// and in places that cannot have a coverage attribute, to demonstrate the
|
||||||
// interaction between multiple errors.
|
// interaction between multiple errors.
|
||||||
|
|
||||||
// FIXME(#126658): The error messages for using this syntax give the impression
|
|
||||||
// that it is legal, even though it should never be legal.
|
|
||||||
|
|
||||||
// FIXME(#126658): This is silently allowed, but should not be.
|
|
||||||
#[coverage]
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
mod my_mod {}
|
mod my_mod {}
|
||||||
|
|
||||||
// FIXME(#126658): This is silently allowed, but should not be.
|
|
||||||
mod my_mod_inner {
|
mod my_mod_inner {
|
||||||
#![coverage]
|
#![coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
struct MyStruct;
|
struct MyStruct;
|
||||||
|
|
||||||
// FIXME(#126658): This is silently allowed, but should not be.
|
|
||||||
#[coverage]
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
impl MyStruct {
|
impl MyStruct {
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32 = 7;
|
const X: u32 = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME(#126658): This is silently allowed, but should not be.
|
|
||||||
#[coverage]
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
trait MyTrait {
|
trait MyTrait {
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32;
|
const X: u32;
|
||||||
|
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
type T;
|
type T;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME(#126658): This is silently allowed, but should not be.
|
|
||||||
#[coverage]
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
impl MyTrait for MyStruct {
|
impl MyTrait for MyStruct {
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
const X: u32 = 8;
|
const X: u32 = 8;
|
||||||
|
|
||||||
#[coverage] //~ ERROR `#[coverage]` must be applied to coverable code
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
|
//~| ERROR attribute should be applied to a function definition or closure
|
||||||
type T = ();
|
type T = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[coverage] //~ ERROR expected `coverage(off)` or `coverage(on)`
|
#[coverage]
|
||||||
|
//~^ ERROR malformed `coverage` attribute input
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,57 +1,277 @@
|
|||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/word-only.rs:23:1
|
--> $DIR/word-only.rs:11:1
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
LL | struct MyStruct;
|
|
|
||||||
| ---------------- not coverable code
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/word-only.rs:36:5
|
--> $DIR/word-only.rs:17:5
|
||||||
|
|
|
||||||
|
LL | #![coverage]
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #![coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #![coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:22:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:31:5
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
LL | const X: u32;
|
|
|
||||||
| ------------- not coverable code
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/word-only.rs:39:5
|
--> $DIR/word-only.rs:27:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:41:5
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
LL | type T;
|
|
||||||
| ------- not coverable code
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
|
||||||
--> $DIR/word-only.rs:29:5
|
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
help: the following are the possible correct uses
|
||||||
| ^^^^^^^^^^^
|
|
|
||||||
LL | const X: u32 = 7;
|
LL | #[coverage(off)]
|
||||||
| ----------------- not coverable code
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/word-only.rs:46:5
|
--> $DIR/word-only.rs:46:5
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
LL | const X: u32 = 8;
|
|
||||||
| ----------------- not coverable code
|
|
||||||
|
|
||||||
error[E0788]: `#[coverage]` must be applied to coverable code
|
|
||||||
--> $DIR/word-only.rs:49:5
|
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
help: the following are the possible correct uses
|
||||||
| ^^^^^^^^^^^
|
|
|
||||||
LL | type T = ();
|
LL | #[coverage(off)]
|
||||||
| ------------ not coverable code
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
error: expected `coverage(off)` or `coverage(on)`
|
error: malformed `coverage` attribute input
|
||||||
--> $DIR/word-only.rs:53:1
|
--> $DIR/word-only.rs:37:1
|
||||||
|
|
|
|
||||||
LL | #[coverage]
|
LL | #[coverage]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
error: aborting due to 7 previous errors
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:56:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:61:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:52:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error: malformed `coverage` attribute input
|
||||||
|
--> $DIR/word-only.rs:67:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: the following are the possible correct uses
|
||||||
|
|
|
||||||
|
LL | #[coverage(off)]
|
||||||
|
|
|
||||||
|
LL | #[coverage(on)]
|
||||||
|
|
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:11:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | mod my_mod {}
|
||||||
|
| ------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:17:5
|
||||||
|
|
|
||||||
|
LL | / mod my_mod_inner {
|
||||||
|
LL | | #![coverage]
|
||||||
|
| | ^^^^^^^^^^^^
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:22:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | struct MyStruct;
|
||||||
|
| ---------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:27:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / impl MyStruct {
|
||||||
|
LL | | #[coverage]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | const X: u32 = 7;
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:37:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / trait MyTrait {
|
||||||
|
LL | | #[coverage]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
... |
|
||||||
|
LL | | type T;
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:52:1
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | / impl MyTrait for MyStruct {
|
||||||
|
LL | | #[coverage]
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
... |
|
||||||
|
LL | | type T = ();
|
||||||
|
LL | | }
|
||||||
|
| |_- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:41:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | const X: u32;
|
||||||
|
| ------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:46:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | type T;
|
||||||
|
| ------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:31:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | const X: u32 = 7;
|
||||||
|
| ----------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:56:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | const X: u32 = 8;
|
||||||
|
| ----------------- not a function or closure
|
||||||
|
|
||||||
|
error[E0788]: attribute should be applied to a function definition or closure
|
||||||
|
--> $DIR/word-only.rs:61:5
|
||||||
|
|
|
||||||
|
LL | #[coverage]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | type T = ();
|
||||||
|
| ------------ not a function or closure
|
||||||
|
|
||||||
|
error: aborting due to 23 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0788`.
|
For more information about this error, try `rustc --explain E0788`.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user