diff options
| author | bors <bors@rust-lang.org> | 2024-05-09 08:34:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-05-09 08:34:14 +0000 |
| commit | cb93c24bf36b3367714516fc2308cf6856916eeb (patch) | |
| tree | f0f6f12d69a3c7c50ac033892aacd75ae8fcd151 /tests/ui/derives | |
| parent | 5f8c17dcc04a2981268df89874203e9bfea50597 (diff) | |
| parent | c2a0ef65da366c7e5235b8f9781278d62ff2f8e1 (diff) | |
| download | rust-cb93c24bf36b3367714516fc2308cf6856916eeb.tar.gz rust-cb93c24bf36b3367714516fc2308cf6856916eeb.zip | |
Auto merge of #124157 - wutchzone:partial_eq, r=estebank
Do not add leading asterisk in the `PartialEq`
I think we should address this issue, however I am not exactly sure, if this is the right way to do it. It is related to the #123056.
Imagine the simplified code:
```rust
trait MyTrait {}
impl PartialEq for dyn MyTrait {
fn eq(&self, _other: &Self) -> bool {
true
}
}
#[derive(PartialEq)]
enum Bar {
Foo(Box<dyn MyTrait>),
}
```
On the nightly compiler, the `derive` produces invalid code with the weird error message:
```
error[E0507]: cannot move out of `*__arg1_0` which is behind a shared reference
--> src/main.rs:11:9
|
9 | #[derive(PartialEq)]
| --------- in this derive macro expansion
10 | enum Things {
11 | Foo(Box<dyn MyTrait>),
| ^^^^^^^^^^^^^^^^ move occurs because `*__arg1_0` has type `Box<dyn MyTrait>`, which does not implement the `Copy` trait
|
= note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
```
It may be related to the perfect derive problem, although requiring the _type_ to be `Copy` seems unfortunate because it is not necessary. Besides, we are adding the extra dereference only for the diagnostics?
Diffstat (limited to 'tests/ui/derives')
| -rw-r--r-- | tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr | 2 | ||||
| -rw-r--r-- | tests/ui/derives/derives-span-PartialEq-enum.stderr | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr b/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr index d0b14ef94c1..e88a523ef4f 100644 --- a/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr +++ b/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr @@ -1,4 +1,4 @@ -error[E0369]: binary operation `==` cannot be applied to type `Error` +error[E0369]: binary operation `==` cannot be applied to type `&Error` --> $DIR/derives-span-PartialEq-enum-struct-variant.rs:9:6 | LL | #[derive(PartialEq)] diff --git a/tests/ui/derives/derives-span-PartialEq-enum.stderr b/tests/ui/derives/derives-span-PartialEq-enum.stderr index f69451ac793..80b225446b4 100644 --- a/tests/ui/derives/derives-span-PartialEq-enum.stderr +++ b/tests/ui/derives/derives-span-PartialEq-enum.stderr @@ -1,4 +1,4 @@ -error[E0369]: binary operation `==` cannot be applied to type `Error` +error[E0369]: binary operation `==` cannot be applied to type `&Error` --> $DIR/derives-span-PartialEq-enum.rs:9:6 | LL | #[derive(PartialEq)] |
