Skip to content

Commit

Permalink
Add test for coverage on a body-less trait function
Browse files Browse the repository at this point in the history
  • Loading branch information
ehuss committed Dec 20, 2024
1 parent 8cb525b commit 64f14b2
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 12 deletions.
4 changes: 2 additions & 2 deletions tests/coverage/attr/trait-impl-inherit.cov-map
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Function name: <trait_impl_inherit::S as trait_impl_inherit::T>::f
Raw bytes (9): 0x[01, 01, 00, 01, 01, 0f, 05, 02, 06]
Raw bytes (9): 0x[01, 01, 00, 01, 01, 10, 05, 02, 06]
Number of files: 1
- file 0 => global file 1
Number of expressions: 0
Number of file 0 mappings: 1
- Code(Counter(0)) at (prev + 15, 5) to (start + 2, 6)
- Code(Counter(0)) at (prev + 16, 5) to (start + 2, 6)
Highest counter ID seen: c0

1 change: 1 addition & 0 deletions tests/coverage/attr/trait-impl-inherit.coverage
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
LL| |// Checks that `#[coverage(..)]` in a trait method is not inherited in an
LL| |// implementation.
LL| |//@ edition: 2021
LL| |//@ reference: attributes.coverage.trait-impl-inherit
LL| |
LL| |trait T {
Expand Down
1 change: 1 addition & 0 deletions tests/coverage/attr/trait-impl-inherit.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Checks that `#[coverage(..)]` in a trait method is not inherited in an
// implementation.
//@ edition: 2021
//@ reference: attributes.coverage.trait-impl-inherit

trait T {
Expand Down
9 changes: 9 additions & 0 deletions tests/ui/coverage-attr/no-coverage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ trait Trait {
type T;

type U;

#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
fn f(&self);

#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
fn g();
}

#[coverage(off)]
Expand All @@ -25,6 +31,9 @@ impl Trait for () {

#[coverage(off)] //~ ERROR attribute should be applied to a function definition or closure
type U = impl Trait; //~ ERROR unconstrained opaque type

fn f(&self) {}
fn g() {}
}

extern "C" {
Expand Down
36 changes: 26 additions & 10 deletions tests/ui/coverage-attr/no-coverage.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,28 @@ LL | / trait Trait {
LL | | #[coverage(off)]
LL | | const X: u32;
... |
LL | | type U;
LL | | fn g();
LL | | }
| |_- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:40:5
--> $DIR/no-coverage.rs:49:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | let _ = ();
| ----------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:44:9
--> $DIR/no-coverage.rs:53:9
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | () => (),
| -------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:48:5
--> $DIR/no-coverage.rs:57:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
Expand All @@ -52,45 +52,61 @@ LL | type T;
| ------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:23:5
--> $DIR/no-coverage.rs:18:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | fn f(&self);
| ------------ not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:21:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | fn g();
| ------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:29:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | type T = Self;
| -------------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:26:5
--> $DIR/no-coverage.rs:32:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | type U = impl Trait;
| -------------------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:31:5
--> $DIR/no-coverage.rs:40:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | static X: u32;
| -------------- not a function or closure

error[E0788]: attribute should be applied to a function definition or closure
--> $DIR/no-coverage.rs:34:5
--> $DIR/no-coverage.rs:43:5
|
LL | #[coverage(off)]
| ^^^^^^^^^^^^^^^^
LL | type T;
| ------- not a function or closure

error: unconstrained opaque type
--> $DIR/no-coverage.rs:27:14
--> $DIR/no-coverage.rs:33:14
|
LL | type U = impl Trait;
| ^^^^^^^^^^
|
= note: `U` must be used in combination with a concrete type within the same impl

error: aborting due to 11 previous errors
error: aborting due to 13 previous errors

For more information about this error, try `rustc --explain E0788`.

0 comments on commit 64f14b2

Please sign in to comment.