diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs
index 1880465eff54..764790a75bb4 100644
--- a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs
+++ b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs
@@ -3629,7 +3629,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
}
}
err.span_note(spans, msg);
- if derived {
+ if derived && trait_name != "Copy" {
err.help(format!(
"consider manually implementing `{trait_name}` to avoid undesired \
bounds",
diff --git a/tests/ui/associated-types/issue-38821.stderr b/tests/ui/associated-types/issue-38821.stderr
index fae388c98d36..07b146f8bfca 100644
--- a/tests/ui/associated-types/issue-38821.stderr
+++ b/tests/ui/associated-types/issue-38821.stderr
@@ -159,7 +159,6 @@ LL | pub enum ColumnInsertValue
where
...
LL | Expr: Expression::Nullable>,
| ------------------------------------------------ unsatisfied trait bound
- = help: consider manually implementing `Copy` to avoid undesired bounds
help: consider further restricting the associated type
|
LL | Expr: Expression::Nullable>, ::SqlType: NotNull,
diff --git a/tests/ui/consts/const-blocks/trait-error.stderr b/tests/ui/consts/const-blocks/trait-error.stderr
index 853e10e0b35a..308d71f0f4bd 100644
--- a/tests/ui/consts/const-blocks/trait-error.stderr
+++ b/tests/ui/consts/const-blocks/trait-error.stderr
@@ -11,7 +11,6 @@ LL | #[derive(Copy, Clone)]
| ---- in this derive macro expansion
LL | struct Foo(T);
| ^^^ - type parameter would need to implement `Copy`
- = help: consider manually implementing `Copy` to avoid undesired bounds
= note: the `Copy` trait is required because this value will be copied for each element of the array
help: create an inline `const` block
|
diff --git a/tests/ui/derives/deriving-copyclone.stderr b/tests/ui/derives/deriving-copyclone.stderr
index 40f96919121f..20a73ffdcfbf 100644
--- a/tests/ui/derives/deriving-copyclone.stderr
+++ b/tests/ui/derives/deriving-copyclone.stderr
@@ -13,7 +13,6 @@ LL | #[derive(Copy, Clone)]
| ---- in this derive macro expansion
LL | struct B {
| ^ - type parameter would need to implement `Copy`
- = help: consider manually implementing `Copy` to avoid undesired bounds
note: required by a bound in `is_copy`
--> $DIR/deriving-copyclone.rs:18:15
|
@@ -65,7 +64,6 @@ LL | #[derive(Copy, Clone)]
| ---- in this derive macro expansion
LL | struct B {
| ^ - type parameter would need to implement `Copy`
- = help: consider manually implementing `Copy` to avoid undesired bounds
note: required by a bound in `is_copy`
--> $DIR/deriving-copyclone.rs:18:15
|
diff --git a/tests/ui/generic-associated-types/impl_bounds.stderr b/tests/ui/generic-associated-types/impl_bounds.stderr
index 63c4ba900829..65e1dff479e5 100644
--- a/tests/ui/generic-associated-types/impl_bounds.stderr
+++ b/tests/ui/generic-associated-types/impl_bounds.stderr
@@ -35,7 +35,6 @@ LL | #[derive(Copy, Clone)]
| ---- in this derive macro expansion
LL | struct Fooy(T);
| ^^^^ - type parameter would need to implement `Copy`
- = help: consider manually implementing `Copy` to avoid undesired bounds
note: the requirement `Fooy: Copy` appears on the `impl`'s associated type `C` but not on the corresponding trait's associated type
--> $DIR/impl_bounds.rs:6:10
|
@@ -62,7 +61,6 @@ LL | #[derive(Copy, Clone)]
| ---- in this derive macro expansion
LL | struct Fooy(T);
| ^^^^ - type parameter would need to implement `Copy`
- = help: consider manually implementing `Copy` to avoid undesired bounds
note: the requirement `Fooy: Copy` appears on the `impl`'s associated function `d` but not on the corresponding trait's associated function
--> $DIR/impl_bounds.rs:7:8
|