Skip to content

Commit 74a2cd0

Browse files
committed
Add test for #34721
1 parent eb5a253 commit 74a2cd0

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

src/test/ui/issues/issue-34721.rs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#![feature(nll)]
2+
3+
pub trait Foo {
4+
fn zero(self) -> Self;
5+
}
6+
7+
impl Foo for u32 {
8+
fn zero(self) -> u32 { 0u32 }
9+
}
10+
11+
pub mod bar {
12+
pub use Foo;
13+
pub fn bar<T: Foo>(x: T) -> T {
14+
x.zero()
15+
}
16+
}
17+
18+
mod baz {
19+
use bar;
20+
use Foo;
21+
pub fn baz<T: Foo>(x: T) -> T {
22+
if 0 == 1 {
23+
bar::bar(x.zero())
24+
} else {
25+
x.zero()
26+
};
27+
x.zero()
28+
//~^ ERROR use of moved value
29+
}
30+
}
31+
32+
fn main() {
33+
let _ = baz::baz(0u32);
34+
}

src/test/ui/issues/issue-34721.stderr

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
error[E0382]: use of moved value: `x`
2+
--> $DIR/issue-34721.rs:27:9
3+
|
4+
LL | pub fn baz<T: Foo>(x: T) -> T {
5+
| - move occurs because `x` has type `T`, which does not implement the `Copy` trait
6+
LL | if 0 == 1 {
7+
LL | bar::bar(x.zero())
8+
| - value moved here
9+
LL | } else {
10+
LL | x.zero()
11+
| - value moved here
12+
LL | };
13+
LL | x.zero()
14+
| ^ value used here after move
15+
16+
error: aborting due to previous error
17+
18+
For more information about this error, try `rustc --explain E0382`.

0 commit comments

Comments
 (0)