Add test for #34721
This commit is contained in:
parent
5e9c8d7369
commit
e0a606c6a9
34
src/test/ui/issues/issue-34721.rs
Normal file
34
src/test/ui/issues/issue-34721.rs
Normal file
@ -0,0 +1,34 @@
|
||||
#![feature(nll)]
|
||||
|
||||
pub trait Foo {
|
||||
fn zero(self) -> Self;
|
||||
}
|
||||
|
||||
impl Foo for u32 {
|
||||
fn zero(self) -> u32 { 0u32 }
|
||||
}
|
||||
|
||||
pub mod bar {
|
||||
pub use Foo;
|
||||
pub fn bar<T: Foo>(x: T) -> T {
|
||||
x.zero()
|
||||
}
|
||||
}
|
||||
|
||||
mod baz {
|
||||
use bar;
|
||||
use Foo;
|
||||
pub fn baz<T: Foo>(x: T) -> T {
|
||||
if 0 == 1 {
|
||||
bar::bar(x.zero())
|
||||
} else {
|
||||
x.zero()
|
||||
};
|
||||
x.zero()
|
||||
//~^ ERROR use of moved value
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _ = baz::baz(0u32);
|
||||
}
|
18
src/test/ui/issues/issue-34721.stderr
Normal file
18
src/test/ui/issues/issue-34721.stderr
Normal file
@ -0,0 +1,18 @@
|
||||
error[E0382]: use of moved value: `x`
|
||||
--> $DIR/issue-34721.rs:27:9
|
||||
|
|
||||
LL | pub fn baz<T: Foo>(x: T) -> T {
|
||||
| - move occurs because `x` has type `T`, which does not implement the `Copy` trait
|
||||
LL | if 0 == 1 {
|
||||
LL | bar::bar(x.zero())
|
||||
| - value moved here
|
||||
LL | } else {
|
||||
LL | x.zero()
|
||||
| - value moved here
|
||||
LL | };
|
||||
LL | x.zero()
|
||||
| ^ value used here after move
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0382`.
|
Loading…
x
Reference in New Issue
Block a user