about summary refs log tree commit diff
path: root/src/test/ui/suggestions
diff options
context:
space:
mode:
authorDylan DPC <99973273+Dylan-DPC@users.noreply.github.com>2022-03-29 22:46:36 +0200
committerGitHub <noreply@github.com>2022-03-29 22:46:36 +0200
commit24715028a078fe592b546870c33de68d16a9ca3f (patch)
treecbbd2f53a1af15c37af805341655f7a82be2962d /src/test/ui/suggestions
parenta0d2862ca41013337d07743c5e0831fe1fbddc99 (diff)
parent0eea3346d215e76e6de283a2c3d9674a1e762452 (diff)
downloadrust-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.fixed18
-rw-r--r--src/test/ui/suggestions/derive-clone-for-eq.rs18
-rw-r--r--src/test/ui/suggestions/derive-clone-for-eq.stderr25
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`.