]> git.proxmox.com Git - rustc.git/blame - src/test/ui/moves/use_of_moved_value_copy_suggestions.rs
New upstream version 1.62.1+dfsg1
[rustc.git] / src / test / ui / moves / use_of_moved_value_copy_suggestions.rs
CommitLineData
5e7ed085
FG
1// run-rustfix
2#![allow(dead_code)]
3
4fn duplicate_t<T>(t: T) -> (T, T) {
5 //~^ HELP consider restricting type parameter `T`
6 (t, t) //~ use of moved value: `t`
7}
8
9fn duplicate_opt<T>(t: Option<T>) -> (Option<T>, Option<T>) {
10 //~^ HELP consider restricting type parameter `T`
11 (t, t) //~ use of moved value: `t`
12}
13
14fn duplicate_tup1<T>(t: (T,)) -> ((T,), (T,)) {
15 //~^ HELP consider restricting type parameter `T`
16 (t, t) //~ use of moved value: `t`
17}
18
19fn duplicate_tup2<A, B>(t: (A, B)) -> ((A, B), (A, B)) {
20 //~^ HELP consider restricting type parameters
21 (t, t) //~ use of moved value: `t`
22}
23
24fn duplicate_custom<T>(t: S<T>) -> (S<T>, S<T>) {
25 //~^ HELP consider restricting type parameter `T`
26 (t, t) //~ use of moved value: `t`
27}
28
29struct S<T>(T);
30trait Trait {}
31impl<T: Trait + Clone> Clone for S<T> {
32 fn clone(&self) -> Self {
33 Self(self.0.clone())
34 }
35}
36impl<T: Trait + Copy> Copy for S<T> {}
37
38trait A {}
39trait B {}
40
41// Test where bounds are added with different bound placements
42fn duplicate_custom_1<T>(t: S<T>) -> (S<T>, S<T>) where {
43 //~^ HELP consider restricting type parameter `T`
44 (t, t) //~ use of moved value: `t`
45}
46
47fn duplicate_custom_2<T>(t: S<T>) -> (S<T>, S<T>)
48where
49 T: A,
50 //~^ HELP consider further restricting this bound
51{
52 (t, t) //~ use of moved value: `t`
53}
54
55fn duplicate_custom_3<T>(t: S<T>) -> (S<T>, S<T>)
56where
57 T: A,
04454e1e 58 //~^ HELP consider further restricting this bound
5e7ed085 59 T: B,
5e7ed085
FG
60{
61 (t, t) //~ use of moved value: `t`
62}
63
64fn duplicate_custom_4<T: A>(t: S<T>) -> (S<T>, S<T>)
04454e1e 65//~^ HELP consider further restricting this bound
5e7ed085
FG
66where
67 T: B,
5e7ed085
FG
68{
69 (t, t) //~ use of moved value: `t`
70}
71
04454e1e
FG
72#[rustfmt::skip]
73fn existing_colon<T:>(t: T) {
74 //~^ HELP consider restricting type parameter `T`
75 [t, t]; //~ use of moved value: `t`
76}
77
78fn existing_colon_in_where<T>(t: T)
79where
80 T:,
81 //~^ HELP consider further restricting type parameter `T`
82{
83 [t, t]; //~ use of moved value: `t`
84}
85
5e7ed085 86fn main() {}