Skip to content

Commit

Permalink
Rollup merge of #95437 - notriddle:notriddle/issue-79076, r=compiler-…
Browse files Browse the repository at this point in the history
…errors

diagnostics: regression test for derive bounds

Closes #79076
  • Loading branch information
Dylan-DPC authored Mar 29, 2022
2 parents a0d2862 + 0eea334 commit 2471502
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/test/ui/suggestions/derive-clone-for-eq.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// run-rustfix
// https://github.com/rust-lang/rust/issues/79076

use std::cmp::PartialEq;

#[derive(Clone, Eq)] //~ ERROR [E0277]
pub struct Struct<T: std::clone::Clone>(T);

impl<T: Clone, U> PartialEq<U> for Struct<T>
where
U: Into<Struct<T>> + Clone
{
fn eq(&self, _other: &U) -> bool {
todo!()
}
}

fn main() {}
18 changes: 18 additions & 0 deletions src/test/ui/suggestions/derive-clone-for-eq.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// run-rustfix
// https://github.com/rust-lang/rust/issues/79076

use std::cmp::PartialEq;

#[derive(Clone, Eq)] //~ ERROR [E0277]
pub struct Struct<T>(T);

impl<T: Clone, U> PartialEq<U> for Struct<T>
where
U: Into<Struct<T>> + Clone
{
fn eq(&self, _other: &U) -> bool {
todo!()
}
}

fn main() {}
25 changes: 25 additions & 0 deletions src/test/ui/suggestions/derive-clone-for-eq.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
error[E0277]: the trait bound `T: Clone` is not satisfied
--> $DIR/derive-clone-for-eq.rs:6:17
|
LL | #[derive(Clone, Eq)]
| ^^ the trait `Clone` is not implemented for `T`
|
note: required because of the requirements on the impl of `PartialEq` for `Struct<T>`
--> $DIR/derive-clone-for-eq.rs:9:19
|
LL | impl<T: Clone, U> PartialEq<U> for Struct<T>
| ^^^^^^^^^^^^ ^^^^^^^^^
note: required by a bound in `Eq`
--> $SRC_DIR/core/src/cmp.rs:LL:COL
|
LL | pub trait Eq: PartialEq<Self> {
| ^^^^^^^^^^^^^^^ required by this bound in `Eq`
= note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider restricting type parameter `T`
|
LL | pub struct Struct<T: std::clone::Clone>(T);
| +++++++++++++++++++

error: aborting due to previous error

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

0 comments on commit 2471502

Please sign in to comment.