Rollup merge of #146907 - cyrgani:146537-test, r=nnethercote

add regression test for issue 146537

Adds a test based on the reduction in https://github.com/rust-lang/rust/issues/146537#issuecomment-3289438439.
This was already fixed in rust-lang/rust#142882 before the issue was even reported, but no test for it was added yet.
This commit is contained in:
Matthias Krüger 2025-09-23 23:40:30 +02:00 committed by GitHub
commit 6617536d14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,8 @@
// Regression test for #146537.
struct NonCopy;
fn main() {
let tuple = &(NonCopy,);
let b: NonCopy;
(b,) = *tuple; //~ ERROR: cannot move out of `tuple.0` which is behind a shared reference [E0507]
}

View File

@ -0,0 +1,26 @@
error[E0507]: cannot move out of `tuple.0` which is behind a shared reference
--> $DIR/non_copy_move_out_of_tuple.rs:7:12
|
LL | (b,) = *tuple;
| - ^^^^^^
| |
| data moved here
| move occurs because the place has type `NonCopy`, which does not implement the `Copy` trait
|
note: if `NonCopy` implemented `Clone`, you could clone the value
--> $DIR/non_copy_move_out_of_tuple.rs:3:1
|
LL | struct NonCopy;
| ^^^^^^^^^^^^^^ consider implementing `Clone` for this type
...
LL | (b,) = *tuple;
| - you could clone this value
help: consider removing the dereference here
|
LL - (b,) = *tuple;
LL + (b,) = tuple;
|
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0507`.