diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-03-29 22:46:36 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-29 22:46:36 +0200 |
| commit | 24715028a078fe592b546870c33de68d16a9ca3f (patch) | |
| tree | cbbd2f53a1af15c37af805341655f7a82be2962d /src/test/ui/suggestions | |
| parent | a0d2862ca41013337d07743c5e0831fe1fbddc99 (diff) | |
| parent | 0eea3346d215e76e6de283a2c3d9674a1e762452 (diff) | |
| download | rust-24715028a078fe592b546870c33de68d16a9ca3f.tar.gz rust-24715028a078fe592b546870c33de68d16a9ca3f.zip | |
Rollup merge of #95437 - notriddle:notriddle/issue-79076, r=compiler-errors
diagnostics: regression test for derive bounds Closes #79076
Diffstat (limited to 'src/test/ui/suggestions')
| -rw-r--r-- | src/test/ui/suggestions/derive-clone-for-eq.fixed | 18 | ||||
| -rw-r--r-- | src/test/ui/suggestions/derive-clone-for-eq.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/suggestions/derive-clone-for-eq.stderr | 25 |
3 files changed, 61 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/derive-clone-for-eq.fixed b/src/test/ui/suggestions/derive-clone-for-eq.fixed new file mode 100644 index 00000000000..f07784d53b3 --- /dev/null +++ b/src/test/ui/suggestions/derive-clone-for-eq.fixed @@ -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() {} diff --git a/src/test/ui/suggestions/derive-clone-for-eq.rs b/src/test/ui/suggestions/derive-clone-for-eq.rs new file mode 100644 index 00000000000..15c0d4659fb --- /dev/null +++ b/src/test/ui/suggestions/derive-clone-for-eq.rs @@ -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() {} diff --git a/src/test/ui/suggestions/derive-clone-for-eq.stderr b/src/test/ui/suggestions/derive-clone-for-eq.stderr new file mode 100644 index 00000000000..55a23c031d5 --- /dev/null +++ b/src/test/ui/suggestions/derive-clone-for-eq.stderr @@ -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`. |
